Entity framework 我应该如何处理没有实体具有键的EF代码优先模型?

Entity framework 我应该如何处理没有实体具有键的EF代码优先模型?,entity-framework,ef-code-first,entity-framework-5,Entity Framework,Ef Code First,Entity Framework 5,我使用实体数据模型向导根据SQL Server中的对象目录视图(即sys.objects、sys.tables、sys.columns等)生成EF数据模型(带有POCO的edmx)。当我尝试通过DbContext的DbSet属性访问任何数据时,EF抛出ModelValidationException,抱怨实体没有定义键 我可以很容易地修改生成实体POCO的T4模板,使其包含用[Key]属性标记的虚拟属性,但这似乎有点不明确,因为现在我的实体类有一个不属于它们的“phantom”属性。为键列选择一

我使用实体数据模型向导根据SQL Server中的对象目录视图(即sys.objects、sys.tables、sys.columns等)生成EF数据模型(带有POCO的edmx)。当我尝试通过DbContext的DbSet属性访问任何数据时,EF抛出ModelValidationException,抱怨实体没有定义键

我可以很容易地修改生成实体POCO的T4模板,使其包含用[Key]属性标记的虚拟属性,但这似乎有点不明确,因为现在我的实体类有一个不属于它们的“phantom”属性。为键列选择一个名称也是一个问题,但我可以为ever类生成一个唯一键列名的GUID

但是,有没有更好、更简洁的方法告诉EF我不需要键列,因为这个模型是严格只读的


附录:如果我使用实体框架电动工具-逆向工程代码优先工具,它会为每个实体创建一个映射类(派生自EntityTypeConfiguration),如果实体没有定义键,它会使用实体中的所有字段定义一个映射类。

数据库中没有定义键吗?即使对于只读场景,这似乎是一个明智的想法。这可能是最合理的修复。数据库中未定义任何键。我使用的所有对象都是sys.*x*对象目录视图。我刚刚让T4将[Key]属性添加到它生成的每个表的第一个属性中。哦,我明白了。我知道LINQtoSQL不需要密钥,所以您可以切换到可靠的旧L2。它不是唯一标识的对象,也不是实体。您想要实现什么?@LadislavMrnka我首先提到了我想要实现的目标,即创建SQL Server对象目录视图的EF数据模型。这些都没有在数据库中定义的键。幸运的是,我随后使用的EF Power Tools自动在该视图的
EntityTypeConfiguration
中添加了一个键,该键使用视图中的每一列。