2

我正在使用 DB first 方法,EF 4.1 和 DbContext POCO 代码生成。

我的数据库有一个多对多的关系,如下所示:

员工

员工ID

员工姓名

帐户

帐户ID

帐户名称

员工账户

员工ID

帐户ID

当我尝试插入一个新员工并为他们分配一个预先存在的帐户时会出现问题,所以我基本上这样做如下:

Employee emp = new Employee();
emp.EmployeeName = "Test";
emp.Accounts.Add(MethodThatLooksUpAccountByName("SomeAccountName"));

context.Employees.Add(emp);
context.SaveChanges();

正在执行(不正确)的 SQL,正在尝试插入新的 [Account] 记录,并且由于违反约束而失败。当然,它不应该插入一个新的 [Account] 记录,它应该只在插入 [Employee] 之后插入一个新的 [EmployeeAccount] 记录。

有什么建议吗?谢谢。

4

1 回答 1

1

MethodThatLooksUpAccountByName此方法是否返回附加或分离的对象?在任何情况下,您都可以尝试将它返回的对象附加到上下文中。

Employee emp = new Employee();
emp.EmployeeName = "Test";
var acc = MethodThatLooksUpAccountByName("SomeAccountName");
context.Attach(acc); //I don't remember if it's attach or attachobject, but intellisense should help you there. 
emp.Accounts.Add(acc);

context.Employees.Add(emp);
context.SaveChanges();
于 2011-10-12T19:06:51.837 回答