Несколько добавленных объектов могут иметь один и тот же первичный ключ в Entity Framework - PullRequest
12 голосов
/ 16 декабря 2011

Я работаю в проекте с использованием EF 4.0.

В таблице Employee есть столбец ReferEmployeeID, который содержит идентификатор сотрудника, который ссылается на нового сотрудника в системе.Таким образом, Employee - это таблица с самоссылкой.

Теперь в случае, если сотрудник, который не добавлен в систему, собирается добавить, и он также ссылается на другого сотрудника в системе, необходимо добавить строкув целом.

ActualEmployee сохранение еще не вызвано, а затем ReferEmployee.Employee = ActualEmployee

Я понимаю, что проблема заключается в том, что как действительные, так и привлеченные сотрудники имеют идентификатор сотрудника, установленный в 0, но как это сделатьэта проблема.

1 Ответ

22 голосов
/ 16 декабря 2011

Предполагая, что EmployeeID в вашей таблице базы данных определено как INT IDENTITY, тогда вы можете сделать это:

// create two new employees - one refers to the other
Employee john = new Employee { EmployeeID = -1, EmpName = "John" };
Employee peter = new Employee { EmployeeID = -2, EmpName = "Peter", ReferEmployeeID = -1 };

// add them to the EF model
ctx.AddToEmployees(john);
ctx.AddToEmployees(peter);

// save changes
ctx.SaveChanges();

Итак, в основном, определите ваших новых сотрудников с помощью "фиктивных" значений EmployeeIDи установите ссылку (Peter ссылки John здесь, посредством своего «фиктивного» идентификатора).

При сохранении этого в SQL Server Entity Framework будет обрабатывать процесс получения действительные EmployeeID значения (которые SQL Server раздает при вставке строки) и EF будут поддерживать эту связь между двумя сотрудниками.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...