我正在使用實體框架與MySQL服務器,因爲我希望能夠很好和簡單的LINQ查詢againy我的MySQL數據庫。 我有一個非常簡單的問題,我很沮喪,因爲我無法相信EF正在犯這樣一個可怕的錯誤。如何讓EF按照正確的順序執行Insert Queries?
爲了簡化,我有父類和子類,並且我想在一個事務中執行兩個插入。
爲了演示:我有A,B,C和D. A是B和C的父親,B和C是D的父母(它需要像那樣)。
我做到以下幾點:
B b = new B() { B_ID = 1 };
A.Bs.Add(b);
C.Ds.Add(new D() { B_ID = b.B_ID });
我做這種方式,因爲這一切實際上是C級內發生。 爲什麼我得到一個UpdateException('...'中的實體參與'BD'關係,找到0個相關的'B',預計1'B')?因爲當我遺漏了最後一條命令(插入D,B的子節點)時,它工作正常,並且在我之後發出插入(即在新事務中)時,它也可以正常工作。
難道EF是以一種隨機的順序盲目地插入元素,但是注意到它不可能是?還是我以完全錯誤的方式接近問題?
EF版本:我有.NET FX 3.5 SP1,所以從我知道它是什麼版本1
更新:非常抱歉,追查錯誤的錯誤,我做,所以現在錯誤不會發生在EF級別(除了我上面說的例外),但實際上chidl元素的INSERT被髮送到DB,我可以在日誌中看到它。所以問題仍然存在,但異常是不同的(外鍵約束失敗)。
感謝你的幫助, 邁克爾
(編輯回答評論)
哪個版本的EF? – 2010-08-23 12:27:57
正如我現在發佈的,我認爲它是版本1. – Michael 2010-08-23 12:34:03