为什么每个表都必须有主键?

时间:2015-01-15 15:26:24

标签: c# sql-server entity-framework primary-key

首先,我的问题是基于here给出的答案。

我有一张桌子,我没有创建主键。此表用于记录目的。 使用EntityFramework(v6.0)向此表添加新记录时,出现以下错误:

类型' System.Data.Entity.Infrastructure.DbUpdateException'的例外情况发生在EntityFramework.dll中但未在用户代码中处理 附加信息:无法更新EntitySet'状态'因为它有一个DefiningQuery,元素中不存在任何元素来支持当前操作。

经过一些搜索后,我发现发生此错误是因为我的表没有主键。 我知道我可以通过向我的表添加主键来修复此错误。但我想知道原因。

问题: 如果我的设计没有必要在我的表格中使用主键,为什么EntityFramework可以使用它呢?

1 个答案:

答案 0 :(得分:4)

  

为什么EntityFramework可以使用没有主键的表?

这是一个设计决定。当无法确定行的唯一性时,实体框架不想进行更新。

他们本可以决定支持它,例如为所有列添加where oldcolN=oldvalN,但仍有可能更新更多行。