当我尝试使用相同的objectContext插入数据时,我遇到了一些麻烦。
我的问题是,实体读取我的代码的顺序不是我"添加"它的顺序。
的例子:
EntityAB具有EntityA的PK作为FK。其它的关系。
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(EntityA);
之前读取objContext.DbSet.Add(EntityAB);
如果我把代码改成:
objContext.DbSet.Add(EntityA);
objContext.SaveChanges();
objContext.DbSet.Add(EntityAB);
objContext.SaveChanges();
。
但是我不能。由于审计,需要在一个 SaveChanges()
中完成。
我的问题是,
我可以强制SAVECHANGES()按照我添加的顺序读取代码吗?
您的上下文是如何设置的?
我认为下面的方法可能有用。
在上下文中
public DbSet<EntityA> EntityAs { get; set; }
public DbSet<EntityAB EntityABs { get; set; }
然后在你的其他代码
objContext.EntityAs.Add(EntityA);
objContext.EntityAB.Add(EntityAB);
objContext.SaveChanges();
如果这不起作用,我将探索
objContext.local