在同一个objectContext中插入多个记录

时间:2013-04-24 20:09:53

标签: entity-framework linq-to-entities objectcontext savechanges

当我尝试使用相同的objectContext插入数据时,我遇到了一些麻烦。

我的问题是,实体读取我的代码的顺序不是我“添加”它的顺序。

示例:

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 个答案:

答案 0 :(得分: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