0

我在嘗試使用相同的objectContext插入數據時遇到了一些麻煩。在同一個對象中插入多條記錄Context

我的問題是,命令該實體讀取我的代碼是不是我「添加」它的順序。

實施例:

EntityAB具有EntityA的PK作爲FK。 1-N關係。

objContext.DbSet.Add(EntityA); 
objContext.DbSet.Add(EntityAB); 
objContext.SaveChanges(); 

錯誤消息,當代碼達到SaveChanges()

The INSERT statement conflicted with the FOREIGN KEY constraint "FK_EntityAB_EntityA". The conflict occurred in database "dbTest", table "dbo.EntityA", column 'IdEntityA'. 
The statement has been terminated. 

所以,我的實體框架是閱讀objContext.DbSet.Add(EntityAB);以前objContext.DbSet.Add(EntityA);


如果我改變代碼:

objContext.DbSet.Add(EntityA); 
objContext.SaveChanges(); 
objContext.DbSet.Add(EntityAB); 
objContext.SaveChanges(); 

它的工作原理。


但我不能。由於審計需要在一個SaveChanges()完成。

我的問題是,
我可否解釋SAVECHANGES()在添加它的順序中閱讀代碼?

回答

1

您的上下文是如何設置的?

我認爲有以下可能工作..

在上下文

public DbSet<EntityA> EntityAs { get; set; } 
public DbSet<EntityAB EntityABs { get; set; } 

然後在其他代碼

objContext.EntityAs.Add(EntityA); 
objContext.EntityAB.Add(EntityAB); 
objContext.SaveChanges(); 

如果不工作,我想探討

objContext.local 
+0

我用sim來解決它ilar(這看起來像一個解決方法,我仍然試圖改進它)。我從@drch [在聊天]中獲得了這個想法(http://chat.stackoverflow.com/transcript/message/9043123#9043123) – 2013-04-25 12:31:27