使用EF Upsert逻辑进行FK违反,并从DB检索内部对象

时间:2015-03-24 14:04:36

标签: c# entity-framework upsert

所以我在我的项目中实现了EF。在我的单元测试中,我遇到了一个我自己似乎无法解决的问题......

我有......

class Employee{
   Guid uid
name: "Foo";
Department: dempartmentObj;
}

class department{
    Guid uid
name: "food prep";
desc: "preps food";
}

现在作为程序逻辑的一部分,我正在创建一个新员工并将他们链接到新部门

所以我

var x = new employee();
 x.department = context.get(uid); //ef context call to retrieve a department

然后使用upsert逻辑保存int事件代码用于修改而不是添加

context.Entry(x).state = x.uid == guid.empty ?
      EntityState.Added: EntityState.Modified;

if(x.uid == Guid.Empty)
          x.uid = Guid.newGuid();

context.SaveChanges();

单元测试我已经确认它在创建新员工和部门时都有效

然而,在检索内部对象时,我遇到了主要的密钥违规,试图保存新员工......

0 个答案:

没有答案