Ошибка вставки «многие ко многим» - Entity Framework 4.1 DbContext - PullRequest
2 голосов
/ 12 октября 2011

Я использую первый метод DB, EF 4.1 с кодом POCO DbContext gen.

Моя база данных имеет отношение "многие ко многим", как показано ниже:

Employee

EmployeeID

EmployeeName

Счет

AccountId

AccountName

EmployeeAccount

EmployeeID

AccountId

Проблема возникает, когда я пытаюсь вставить нового сотрудника и назначить ему уже существующую учетную запись, поэтому я делаю это, как показано ниже:

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

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

SQL, который он выполняет (неправильно), пытается ВСТАВИТЬ новую запись [Учетная запись], и это не удается из-за нарушения ограничения. Конечно, он не должен вставлять новую запись [Account], он должен вставлять только новую запись [EmployeeAccount] после вставки [Employee].

Есть совет? Спасибо.

1 Ответ

1 голос
/ 12 октября 2011

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();
...