我已经使用实体数据模型向导根据 SQL Server 中的对象目录视图(即 sys.objects、sys.tables、sys.columns 等)生成 EF 数据模型(带有 POCO 的 edmx)。当我尝试访问通过我的 DbContext 的 DbSet 属性的任何数据,EF 都会引发 ModelValidationException,抱怨实体没有定义键。
我可以轻松地修改生成实体 POCO 的 T4 模板以包含一个标有 [Key] 属性的虚拟属性,但这似乎有点笨拙,因为现在我的实体类有一个不属于它们的“幻像”属性. 为键列选择名称也是一个问题,但我可以做一些事情,比如为每个类生成一个唯一键列名称的 GUID。
但是,难道没有更好、更简洁的方式告诉 EF 我不需要键列,因为这个模型是严格只读的?
附录:如果我使用Entity Framework Power Tools - Reverse Engineer Code First工具,它会为每个实体创建一个映射类(派生自EntityTypeConfiguration
),并且在实体没有定义键的情况下,它使用实体中的所有字段定义一个。