第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

EF 第二筆交易獲取基礎(chǔ)提供者在打開時(shí)失敗

EF 第二筆交易獲取基礎(chǔ)提供者在打開時(shí)失敗

C#
SMILET 2022-01-09 10:07:21
這是在 EF 6 之前。我的公司有一個(gè)流程,可以與我們期望的所有其他客戶一起工作。該過程打開到客戶端數(shù)據(jù)庫(kù)的連接,一次讀取 1000 條記錄,并將其提交到我們的數(shù)據(jù)庫(kù)。對(duì)于這個(gè)客戶端,我們讀取并提交前 1000 條記錄就好了。當(dāng)它再次開始讀取時(shí),我得到“底層提供程序在打開時(shí)失敗”。我知道每次讀取都會(huì)打開和關(guān)閉 EF 事務(wù),因此當(dāng)它嘗試重新打開連接以進(jìn)行下一次讀取時(shí),它就會(huì)失敗。詳細(xì)信息:我們通過 VPN 連接到客戶端數(shù)據(jù)庫(kù)。代碼流程為:  connection.open()  create datareader  while datareader.read()  get 1000 records  bulk commit  db.SaveChanges  get next 1000 records  and so on until it gets all records在第一次 SaveChanges 之后是我們得到錯(cuò)誤的時(shí)候。任何幫助表示贊賞。
查看完整描述

2 回答

?
慕萊塢森

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超4個(gè)贊

感謝大家的幫助。事實(shí)證明,丟失的連接是我們的數(shù)據(jù)庫(kù)而不是客戶端的。不完全確定原因,但似乎有幫助的是將我們的 BulkInsert 方法在 using 塊內(nèi)創(chuàng)建 SqlBulkCopy 對(duì)象。我們還在失敗時(shí)重新建立了連接。這有點(diǎn)hacky,但它正在工作。


查看完整回答
反對(duì) 回復(fù) 2022-01-09
?
慕虎7371278

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超4個(gè)贊

在 EF6 之前,無(wú)論 DbContext 是否擁有它,它都會(huì)在被釋放時(shí)關(guān)閉連接。從 EF6 開始,上下文遵循contextOwnsConnection傳遞給構(gòu)造函數(shù)的標(biāo)志(參見此處)。從您的偽代碼中不清楚您如何實(shí)例化連接和上下文,因此假設(shè)您在循環(huán)中創(chuàng)建上下文并傳遞打開的連接。如果是這種情況,您有幾個(gè)選擇:

  • 升級(jí)到 EF6,或

  • 僅對(duì)所有保存使用一個(gè) DbContext,或者

  • 將所有記錄加載到內(nèi)存中,并在其自己的 DbContext 中以塊的形式處理它們,或者

  • 分塊加載,分塊處理

如果出于性能原因避免使用相同的上下文進(jìn)行處理,則可以使用 .AsNoTracking()。MSDN 上有一篇關(guān)于 EF 性能調(diào)整的文章,以防您需要更多。


查看完整回答
反對(duì) 回復(fù) 2022-01-09
  • 2 回答
  • 0 關(guān)注
  • 156 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)