我使用的是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类中,不会生成任何数据注释属性。因此,所需的字段信息将丢失。
所以我的问题是:
[Required]
注释? 答案 0 :(得分:0)
1)我不知道为什么。我只知道Db-first方法不会向属性添加任何数据注释。
2)确实创建了一个单独的部分类! Here就是一个例子。因为EF会在每次更新模型时覆盖并重新生成所有POCO类,所以对这些类的任何更改(也包括数据注释)都将丢失......
答案 1 :(得分:0)
也许你会发现这个链接很有用。 EF Validation 只需添加Metadata类并进行必要的验证:
[MetadataType(typeof(UserMetadata))
public partial class User
{
...
}
public class UserMetadata
{
[UserValidate("State")]
public string State;
// etc.
}
希望这可以提供帮助