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

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

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

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

ActualEmployee save еще не вызывается, а затем ReferEmployee.Employee = ActualEmployee

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

Ответ 1

Предполагая, что 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();

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

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