1. 程式人生 > >c# 解決 EntityFramework 基礎提供程式在 Open 上失敗

c# 解決 EntityFramework 基礎提供程式在 Open 上失敗

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的閉合結點前。