多对多插入失败 - 实体框架4.1 DbContext

时间:2011-10-12 19:00:19

标签: entity-framework entity-framework-4.1 many-to-many dbcontext

我正在使用DB第一种方法,EF 4.1使用DbContext POCO代码生成。

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

员工

EMPLOYEEID

EmployeeName

帐户

ACCOUNTID

帐户名

EmployeeAccount

EMPLOYEEID

ACCOUNTID

当我尝试插入新员工并为他们分配一个预先存在的帐户时会出现问题,因此我基本上按照以下方式执行此操作:

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

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

正在执行的SQL(错误地),正在尝试插入新的[Account]记录,并且这违反了约束条件。当然,它不应该插入新的[Account]记录,它应该只在插入[Employee]后插入一个新的[EmployeeAccount]记录。

有什么建议吗?感谢。

1 个答案:

答案 0 :(得分: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();