2012-02-15 157 views
4

我們正在努力實現一個快速的原型來證明什麼是可能的實體框架...關閉交易的實體框架

我們有一個Informix數據庫不支持交易 - 是有可能用這個實體框架?

我們有一個工作模式,工作提供商,但它似乎並沒有我們可以執行無交易踢CRUD查詢 - 我們甚至一直試圖surpress他們...

[Test] 
public void TestMethod1() 
{ 
    entities ent = new entities(); 

    var a = ent.brands.Select(x => x); 

    using (TransactionScope trans = new TransactionScope(
              TransactionScopeOption.Suppress)) 
    { 
     ent.brands.AddObject(new brand() { br_name = "New Test Brand" }); 
     ent.SaveChanges(); 
    } 
} 

我們得到的錯誤如下:

在提供程序連接上啓動事務時發生錯誤。詳情請參閱內部例外。

我環顧四周,什麼建議使用抑制,但它似乎並沒有工作......任何想法?

+0

什麼是內部異常? – nemesv 2012-02-15 17:43:46

+0

「我們有一個不支持事務的Informix DB」 - 但是IIRC甚至Informix 7支持(非嵌套)事務 - ?我懷疑是由驅動程序服從supress標誌,所以這可能是IBM Data Provider的一個缺陷。 – Rup 2012-02-15 18:33:35

回答

2

要回答您的主要問題(我對Informix一無所知) - 您無法禁止交易。如果SaveChanges未找到現有的事務,它將始終在提供程序上啓動一個新事務。在交易中運行SaveChanges是EF的關鍵功能。

Btw。我檢查了IBM Data Provider,我發現只支持EFv1,所以EFv4和EFv4.1的功能不需要工作(除非有更新版本的提供者)。

+1

謝謝你,看着一個堆棧跟蹤後,它似乎總是被稱爲開始事務..:/ – 2012-02-21 13:32:05