C# 使用EF Upsert逻辑和从DB检索的内部对象的FK冲突
所以我在我的项目中实施EF。在我的单元测试中,我遇到了一个我自己无法解决的问题 我有C# 使用EF Upsert逻辑和从DB检索的内部对象的FK冲突,c#,entity-framework,upsert,C#,Entity Framework,Upsert,所以我在我的项目中实施EF。在我的单元测试中,我遇到了一个我自己无法解决的问题 我有 class Employee{ Guid uid name: "Foo"; Department: dempartmentObj; } class department{ Guid uid name: "food prep"; desc: "preps food"; } 现在,作为该计划逻辑的一部分,我正在创建一名新员工,并将他们与新部门联系起来 所以我 然后使用upsert逻辑保存代码用于修
class Employee{
Guid uid
name: "Foo";
Department: dempartmentObj;
}
class department{
Guid uid
name: "food prep";
desc: "preps food";
}
现在,作为该计划逻辑的一部分,我正在创建一名新员工,并将他们与新部门联系起来
所以我
然后使用upsert逻辑保存代码用于修改而不是添加的事件
context.Entry(x).state = x.uid == guid.empty ?
EntityState.Added: EntityState.Modified;
if(x.uid == Guid.Empty)
x.uid = Guid.newGuid();
context.SaveChanges();
通过单元测试,我已经确认在创建新员工和部门时它都能工作
但是,在检索Inner对象时,我在试图保存新员工时遇到主键冲突…您是否尝试调用
SaveChanges()
两次?,“创建您的部门”>“保存更改”>“创建您的员工”>“保存更改”。如果成功,则意味着关系出现问题,员工无法从部门获取FK。@kondas我可以独立保存每个对象并进行更新(检索时)但是,当创建新的外部对象并从数据库检索内部对象时,我收到了错误。您需要更新您的问题并提供更具体的代码、您的实际类,如果您先使用代码,还需要使用上下文代码,以便我们能更好地为您提供帮助。具体的例外情况是什么?。您的“外部”定义是否附加到上下文中,或者您是否将其条目设置为未更改?
context.Entry(x).state = x.uid == guid.empty ?
EntityState.Added: EntityState.Modified;
if(x.uid == Guid.Empty)
x.uid = Guid.newGuid();
context.SaveChanges();