实体框架SaveChanges返回错误.AddObject不设置主键

use*_*127 6 c# entity-framework-4

我有一张Property桌子,另一张Detail桌子.我使用断开连接的方法,其中添加了多个属性,然后当我们单击保存按钮时,它将保存对数据库的更改.这种不为每个添加的属性保存的方法是因为用户也可以从列表中删除.

这就是我在做什么

foreach (Property P in Results)
{
  if(P.PropertyId==0 && P.EntityState==EntityState.Added)
    Repository.Properties.AddObject(P);
}
Run Code Online (Sandbox Code Playgroud)

但是当我尝试保存数据时

public void Save()
{
  Repository.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)

它返回错误

无法确定'database.FK_Details_Property'
关系的主要结尾.多个添加的实体可以具有相同的主键.

我认为它是因为每次我调用AddObject时它的主键是0,我不知道什么可以解决这个问题.对于遇到它的人来说,这是否相似或听起来很熟悉?

提前致谢

rad*_*scu 0

1)您可能想检查循环依赖关系。它可能位于两个实体之间,使用详细实体保存产品,反之亦然

检查此处:http://social.msdn.microsoft.com/Forums/sk/adodotnetentityframework/thread/5ba666ff-0103-4a83-b4d0-743c16a99491

2)添加Repository.Properties.AddObject(P)时要小心;因为在P实体后面的代码中仍然有对Detail表的引用。

确保详细信息相关实体尚未保存链接到它的对象。

如果 Detail 对象有 3 个属性,那么当您保存 Detail 时,您还将保存 3 个属性。