我正在處理MVC3應用程序,並使用鏈接到Oracle數據庫(11G R2)的實體框架。 我遇到了一個問題,當我試圖在TransactionScope
中使用單個對象上下文時。TransactionScope與依賴對象上的對象上下文
下面是代碼:
using (TransactionScope scope = new TransactionScope())
{
using (Entities context = new Entities())
{
// Right insert
T_RIGRIGHT entity1 = new T_RIGRIGHT()
{
RIGCODE = "test1",
RIGINSERTLOGIN = "aco",
RIGINSERTDATE = DateTime.Now,
RIGUPDATELOGIN = "aco",
RIGUPDATEDATE = DateTime.Now
};
context.AddToT_RIGRIGHT(entity1);
context.SaveChanges();
// Right/Profile insert
T_RIPRIGHTPROFILE entity2 = new T_RIPRIGHTPROFILE()
{
PROID = 3,
RIGID = entity1.RIGID,
RIPINSERTLOGIN = "aco",
RIPINSERTDATE = DateTime.Now,
RIPUPDATELOGIN = "aco",
RIPUPDATEDATE = DateTime.Now
};
context.AddToT_RIPRIGHTPROFILE(entity2);
context.SaveChanges(); // SaveChanges fails due to the FK constraint on table
}
scope.Complete();
}
讓我解釋一下代碼...
首先我創建一個實體,稱爲entity1
爲T_RIGRIGHT
元素。 I instanciate a T_RIPRIGHTPROFILE
元素使用之前創建的T_RIGRIGHT元素的ID。
第二個context.SaveChanges()
執行失敗,異常涉及表T_RIPRIGHTPROFILE
(需要T_RIGRIGHT
)上的外鍵約束。
希望我的解釋足夠清楚
有什麼辦法可以使它工作嗎?
P.S. :我爲我的英語道歉,因爲它不是我的母語。
非常感謝您的解釋。它完美的作品。 – Alex