多个添加的实体可能在entity framework中具有相同的主键

我正在使用EF 4.0进行项目。

Employee表有一列ReferEmployeeID ,其中包含引用系统中新员工的员工的员工ID。 所以Employee是一个自引用表。

现在,如果未添加到系统的员工即将添加,并且他还引用系统中的其他员工,则应该完全添加该行。

ActualEmployee保存尚未调用,然后是ReferEmployee.Employee = ActualEmployee

我理解问题是员工实际和推荐都将员工ID设置为0,但是如何解决这个问题。

假设数据库表中的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 ,通过其“虚拟”ID)。

将其保存到SQL Server时,entity framework将处理获取真实 EmployeeID值的过程(SQL Server在插入行时将其分发),EF将维护两个员工之间的链接。