2015-01-15 77 views
0

首先,我的问题是基于给出的答案here为什么每个表都必须有一个主键?

我有一张表,我没有创建一个主键。此表用于记录目的。 虽然增加使用的EntityFramework(V6.0)的新记录这个表我得到以下错误:

型“System.Data.Entity.Infrastructure.DbUpdateException”的异常出现在EntityFramework.dll但没有在用户代码中处理 附加信息:无法更新EntitySet的“状态”,因为它具有定义查询且元素中不存在元素以支持当前操作。

经过一番搜索,我发现这个错误发生是因为我的表没有主键。 我知道我可以通过添加一个主键到我的表来解决这个错误。但我想知道为什么。

问题: 如果没有必要为我设计,我的表中使用一个主键,为什么不是有可能为的EntityFramework与这方面的工作?

+0

为什么你需要一个名字或一个单词? – 2015-01-15 15:29:11

+1

@WillMarcouiller糟糕的问题 - 名称不是唯一的! – Vladimirs 2015-01-15 15:29:50

+2

为什么我在银行的帐户有一个帐号? – hatchet 2015-01-15 15:30:44

回答

4

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

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

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

+0

行的唯一性总是可以确定的。 – 2015-01-15 15:29:46

+3

@布莱恩启迪我。 – CodeCaster 2015-01-15 15:30:33

+0

我没有考虑过那个角度下的问题,有趣! =) – 2015-01-15 15:30:58

相关问题