EF 4.1数据库优先。 “EntityType <entity>没有定义键。”</entity>

时间:2013-07-12 12:20:51

标签: entity-framework-4 edmx

我使用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并重新开始,因为它需要一段时间才能正确,这可能无法解决问题。

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

1 个答案:

答案 0 :(得分:0)

假设属性Id映射到您的主键,那么您必须用[key]属性装饰其属性,如下所示:

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