我使用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并重新开始,因为它需要一段时间才能正确,这可能无法解决问题。
有人可以帮我解决这个问题吗?谢谢。
答案 0 :(得分:0)
假设属性Id映射到您的主键,那么您必须用[key]
属性装饰其属性,如下所示:
[Key]
public int Id { get; set; }