0
我有一些類型的A,B,C和X之間的下列關係:呼叫連接並添加提供相同的對象作爲參數
A->B->X
|->C->X
|->X
現在假設我想一個新的A添加到數據庫中,並它與B,C的現有實例和X關聯
我在做什麼是這樣的:
using (Context context = new Context())
{
context.As.Attach(A);
context.As.Add(A);
context.SaveChanges();
}
它似乎工作,但我不知道這件事,因爲連接通常用於連接存在於g實例。
這種替代不起作用:
using (Context context = new Context())
{
context.Bs.Attach(A.B);
context.Cs.Attach(A.C);
context.As.Add(A);
context.SaveChanges();
}
因爲在這種情況下,X被連接兩次(ABX和ACX)和實體框架拋出一個異常:
System.InvalidOperationException:
An object with the same key already exists in the ObjectStateManager.
The ObjectStateManager cannot track multiple objects with the same key.
是否有意義使用我的解決方案還是有更好的方法來做到這一點?