c# - Entity Framework SaveChanges 返回错误。 AddObject 不设置主键

标签 c# entity-framework-4

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

这是我在做的事情

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

但是当我尝试保存数据时

public void Save()
{
  Repository.SaveChanges();
}

返回错误

Unable to determine the principal end of the 'database.FK_Details_Property'
relationship. Multiple added entities may have the same primary key.

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

提前致谢

最佳答案

它绝对是这里相关的身份列。

假设您使用的是 MS SQL 请检查您要插入的表格和任何相关的表格 那个

1) 身份规范 = 是

2) 身份是否=是

3) 身份增量 = 1

4) 身份种子 = 1

肯定是想给你插PK,你得去那边看看。确保您也检查了子表。 如果您仍然遇到问题并且您没有使用代码优先方法,请尝试在您的 EDMX 中重新生成这些表。

关于c# - Entity Framework SaveChanges 返回错误。 AddObject 不设置主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7808132/

相关文章:

c# - 通过TDD创建映射函数 : Too Much Time Spent Writing Tests?

c# - JSON .append @Html.Partial

c# - 我怎样才能得到按钮的命令参数?

c# - LINQ 到实体 - 触发器和表默认值

c# - 如何将 new List<int> {1} 放入 NUNIT 测试用例中?

c# - 连接两个属性以在 DropDownList 中显示

entity-framework - EF Code First 在保存更改时处理数据库异常

c# - 如何检查现有记录

c# - Entity Framework (EF) OutOfMemoryException

c# - 简单 Entity Framework 导航错误