我得到了一些这些错误,因为它们在视图上非常有意义。我理解他们的意思,但我正在寻找一种方法来防止模型生成警告消息。我以为我可以编辑.edmx XML来删除错误,但警告会重新生成。我在视图上定义了一个键,虽然它似乎没有帮助。
有什么方法可以摆脱这些警告吗?或者是否有某种程度上让实体框架意识到这不是一个可编辑的表,而且不需要主键?我主要是从项目美学的角度来看(我不喜欢在我的错误列表中看到警告)。
答案 0 :(得分:34)
我完全理解你来自哪里。这是我在试图掌握EF时遇到的最大烦恼之一,显然,这是一个非常普遍的问题。
对我有用的解决方案是在设计器模式下以视图打开EDMX并自己分配主键。只要有一个,它并不重要。您右键单击要设置为主键的列,然后选择Entity Key
(它是一个复选框选项)。您可能必须退出并重新启动Visual Studio,直到此警告消失为止。
我希望它也适合你。但即使它确实如此,它也是一个短期修复,因为下次更新视图时,它可能会遇到同样的问题。但只要上述步骤有效,就应该花几秒钟来修复。
此外,您可能会发现一些有用的链接:
答案 1 :(得分:24)
在我的情况下,这很容易解决,下面是步骤:
在尝试任何操作之前,可以尝试确保您不要在edmx中手动更改任何内容。
我希望这会有所帮助。
答案 2 :(得分:4)
我使用rownumber作为ID使用http://www.hilmiaric.com/?p=95描述的技术在EF4和EF5中运气好
SELECT ISNULL((ROW_NUMBER()OVER(按XXX ASC订购)),0)AS'ID',
但我没有EF5及以上的解决方案。最后一次尝试6.1.3
答案 3 :(得分:0)
实体框架有时会令人沮丧。我真的希望微软能够摆脱困境,解决EF Visual Modeler的所有问题,并从数据库中更新模型。我只是花了半个多小时通过手动修改.edmx文件来清理视图中的重复字段,我也遇到了错误的构建和这个问题:
<!--Errors Found During Generation:
warning 6002: The table/view 'BMP_DBA.BMP_INST_DATA_SEARCH_VIEW' does not have a primary key defined. The key has been inferred and the definition was created as a read-only table/view.
-->
唉,我必须像往常一样做,并通过在设计器中右键单击主键来手动设置主键,然后重新启动Visual Studio,然后重新构建应用程序。当我重建时,我仍然在.edmx文件中收到警告但是现在可以使用构建。这只是处理EF的细微差别之一。
答案 4 :(得分:0)
检查数据库表中的主键。也许ID列标记为身份但不是主键。