EF4 0..1 关系导致错误 2016:无法指定条件

Posted

技术标签:

【中文标题】EF4 0..1 关系导致错误 2016:无法指定条件【英文标题】:EF4 0..1 relationship leads to Error 2016: Condition cannot be specified 【发布时间】:2010-04-09 18:47:54 【问题描述】:

这与previous question 非常相似(并且可能是完全相同的问题),但我确实没有充分理解答案,无法确定。

我在 Visual Studio RC1 中使用 Entity Framework 4 来创建一个 azure 服务应用程序(所以它是 .Net 3.5)。我有一个包含很多模式的数据库,如下所示:

Thing                     ThingType
-------------             --------------
Id : int                  Id : int
Type : int

其中 Thing.Type 引用了一个 ThingType。当 EF4 从数据库中组装模型时,会生成一个错误,内容如下:

错误 2016:无法为列成员“类型”指定条件,因为它被标记为“计算”或“身份”StoreGeneratedPattern。

我不知道如何前进,但显然这是一种非常常见的情况。我非常有信心有人可以帮助我。

【问题讨论】:

【参考方案1】:

在 RC1 中存在一个错误,即外键关系不断被标记为 StoreGeneratedPattern="Identity"。这可能会导致您在此处看到的问题,但我不能肯定地说,因为您的环境不同。查看您的 EDMX 文件,您应该看到 StoreGeneratedPattern="Identity" 只有 Thing 和 ThingType 的 Id 字段,而不是 ThingThingType 关系。

另见http://blog.abodit.com/2010/03/system-data-updateexception-a-value-shared-across-entities-or-associations-is-generated-in-more-than-one-location-check-that-mapping-does-not-split-an-entitykey-to-multiple-store-generated-columns/

Microsoft 已确认此错误已针对 RTM 进行了修复,这很好,因为它会在您每次从数据库中更新模型时影响您!

【讨论】:

以上是关于EF4 0..1 关系导致错误 2016:无法指定条件的主要内容,如果未能解决你的问题,请参考以下文章

错误 175:在配置中找不到指定的存储提供程序,或者对 EF4 和 SQL Server CE 4 无效

使用 EF4 和 MySql

更新旧应用程序导致此错误 => 无法确定任务 ':app:compileDebugJavaWithJavac' 的依赖关系

保存 EF4 POCO 对象的更改时更新关系

如何使用 MVC3 多对多关系和 EF4.1 模型优先检索数据?

尝试进行分层更新会导致错误“无法插入外键值”