我使用的是 EF 4.x 数据库优先方法。我有 edmx 文件,它生成了从 EntityObject 派生的 C# 类。我有一个使用生成的类作为模型的 ASP.NET MVC 4 应用程序。验证必填字段的客户端验证工作正常。
现在我转移到 EF 5 并使用 DbContext 生成器,它生成 POCO C# 类。我发现必填字段验证不再适用于 EF 5。
我认为问题在于在 EF 4.x EntityObject 生成器中,生成的类具有[EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
属性。但是在 EF 5.x POCO 类中,不会生成数据注释属性。因此,必填字段信息丢失。
所以我的问题是:
- 为什么 EF 5.x DbContext 生成器不
[Required]
从 edmx 文件生成注释? - 放置这些数据注释的正确位置在哪里?我应该修改 .tt 文件以生成 [Required] 属性吗?还是手动编写一个 [MetadataType] 分部类,在单独的类中定义数据注解属性?