当我尝试使用相同的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()阅读我添加的订单中的代码?
答案 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