c# 解決 EntityFramework 基礎提供程式在 Open 上失敗
阿新 • • 發佈:2019-01-09
1. 出現的問題
從Excel中匯入資料到資料庫中,當Excel中記錄比較多的時候,會報錯:
“EntityFramework 基礎提供程式在 Open 上失敗”,有時會報空指標的錯誤。
2. 原因
事務預設的事務超時時間(Timeout)不夠,當事務還在執行,但是超時時間就已經到了。
3. 解決辦法
修改預設的事務超時時間(Timeout)
TransactionOptions transactionOption = new TransactionOptions();
//設定事務隔離級別
transactionOption.IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted;
//設定事務超時時間,這裡設定為8分鐘
transactionOption.Timeout = new TimeSpan(0, 8, 0);
using (var scope = new TransactionScope(TransactionScopeOption.Required, transactionOption))
{
try
{
//你的事務
//……
scope.Complete();
}
catch (Exception objErr)
{
//發生異常時候的處理
}
}
4. 注意事項
每臺機器有個事務的最大超時時間(maxTimeout)為10分鐘,當設定的事務超時時間大於10分鐘時,還需要修改機器的最大超時時間,位於machine.config
檔案中。
在Win7系統中,位於
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\machine.config
和
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\machine.config
一個為64位的,一個為32位的,最好兩個都修改。
檔案中加入以下內容:
<system.transactions>
<machineSettings maxTimeout="00:59:00" />
<defaultSettings timeout="00:59:00"/>
</system.transactions>
需加在configuration的閉合結點前。