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

Why is it necessary for each and every Table to have a Primary Key?

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

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

'System.Data.Entity.Infrastructure.DbUpdateException' 类型的异常发生在 EntityFramework.dll 但未在用户代码中处理 附加信息:无法更新 EntitySet 'Status',因为它有一个 DefiningQuery 并且元素中不存在支持当前操作的元素。

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

问题: 如果我的设计不需要在我的 table 中使用主键,为什么 EntityFramework 不能使用它?

why isn't it possible for EntityFramework to work with tables without primary keys?

这是一个设计决定。 Entity Framework 不想在无法确定行的唯一性时进行更新。

他们本可以决定支持它,例如通过为所有列添加 where oldcolN=oldvalN,但这仍然可能更新比预期更多的行。