使用现有数据库创建模型时,Entity Framework 4.0生成只读模型

8
我正在开发一个自定义的ado.net提供程序,并使用该提供程序在Visual Studio 2010中集成Entity Framework支持。我正在为表对象创建所有可能的映射,并从数据库中读取所有相关的元数据。对于我的测试,一个表包含主键和其他字段。当我使用这个表从数据库创建模型时,我得到了一个包含所有列映射和其他内容的模型,但是也出现了以下错误消息:
模型生成时有警告或错误。 请查看错误列表以获取更多详细信息。在运行应用程序之前,必须解决这些问题。 从数据库加载元数据花费了00:00:11.4799371。 生成模型花费了00:00:04.2751189。 将连接字符串添加到App.Config文件中。 编写.edmx文件花费了00:00:00.0005060。
如果我使用XML编辑器打开.edmx文件,我会看到以下错误:
<!--Errors Found During Generation:
  warning 6002: The table/view 'sqlfire.APP.CUSTOMERS' does not have a primary key defined. The key has been inferred and the definition was created as a read-only table/view.
  -->

它还为该表添加了一个带有SELECT ...语句的DefiningQuery。

我正在围绕这个问题打转,迫切地寻求一些帮助。


好问题亲爱的...我也有同样的问题。 - Ajay2707
1个回答

15

从错误信息来看,您的其中一个表/视图没有主键EF需要在每个表中都有主键才能生成实体键。

您可能仍然可以运行您的应用程序,但我强烈建议您按照警告添加主键。


不幸的是,这似乎不是问题所在。我在表上有一个主键。我正在使用自定义的ADO.NET驱动程序与基于Java的数据库进行实体框架集成的内部工作。当EF代码使用所需的API查询数据库时,它会返回清楚显示主键存在于表中的元数据,但在生成模型XML时,它会给我带来问题。我正在寻找可能缺失的内部解决方案。微软EF组或MySQL组中是否有人处理过这种问题。感谢您的关注。 - user2001457
我遇到了完全相同的问题。我们有一个带有链接Oracle数据库和视图的MS SQL Server。当从这些视图生成实体时,我遇到了这个问题,它无法生成类。我手动设置了所有键,但仍然无法生成。 - Pete
我在链接https://dev59.com/bXI95IYBdhLWcg3wtwRe#31358295中获得了最高评分的答案。 - Ajay2707

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接