【问题标题】:EF 4.1 Database first. "EntityType <Entity> has no key defined."EF 4.1 数据库优先。 “EntityType <Entity> 没有定义键。”
【发布时间】:2013-07-12 12:20:51
【问题描述】:

我使用 Entity Framework 4.1 和 MS SQL Server 2008 创建了一个 VS 2010、.Net 4、MVC 4 应用程序。

应用程序分为一个 MVC Web 项目、一个服务项目和多个实体项目。每个实体项目都包含一个 edmx 文件和一个上下文。 edmx 文件是从数据库生成的,而不是代码优先。

我的应用程序编译并成功运行,直到我访问一个引用一个特定 edmx 文件的页面,然后我收到错误:

System.Data.Edm.EdmEntityType: : EntityType '<Entity>' has no key defined. Define the key for this EntityType. 

System.Data.Edm.EdmEntitySet: EntityType: EntitySet <Entity>s is based on type <Entity> that has no keys defined. 

edmx 包含 22 个表格,我收到了其中 8 个表格的此消息。

这些表都包含数据库中的主键,并且这些似乎已被带到 edmx,因为 edmx 通过正确的字段显示键符号,并且如果您查看字段 Entity Key = True 的属性。所有其他实体项目都正常工作,其中一些包含一些在此处引起问题的相同表。

我已经删除了一些有问题的表并重新添加了它们,但这并没有帮助。我不愿意删除整个 edmx 并重新开始,因为它需要很长时间才能正确,这可能无法解决问题。

有人可以帮我解决这个问题吗?谢谢。

【问题讨论】:

  • 我忘了说 edmx 在 Visual Studio 中也验证成功
  • 请注意,如果您在 .NET 4.5 中使用复合键,则需要使用 EF 的预发布版本,因为许多属性被移动到不同的命名空间。我收到了这个确切的消息,因为 EF 无法识别我的复合键。

标签: entity-framework-4 edmx


【解决方案1】:

假设一个属性 ID 映射到您的主键,那么您必须使用 [key] 属性来装饰它的属性,如下所示:

[Key]
public int Id { get; set; }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-22
    • 2013-06-13
    • 1970-01-01
    • 1970-01-01
    • 2019-08-24
    • 1970-01-01
    • 2016-04-02
    相关资源
    最近更新 更多