0

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

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

例子:

EntityABEntityA的 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()

我的问题是,
我可以按照添加的顺序阅读代码吗?

4

1 回答 1

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   
于 2013-04-24T21:23:23.390 回答