实体框架5.x数据注释



我使用的是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类中,不会生成任何数据注释属性。因此,所需的字段信息丢失。

所以我的问题是:

  1. 为什么EF 5.x DbContext生成器不生成来自edmx文件的[Required]注释
  2. 哪里是合适的地方放置这些数据注释?我应该修改.tt文件以生成[必需]属性?或者手动写入[MetadataType]部分在单独的阶级

1)我不知道为什么。我只知道Db-first方法不会向属性添加任何数据注释。

2) 确实创建了一个单独的分部类!下面是一个例子。因为EF每次更新模型时都会覆盖并重新生成所有POCO类,所以对这些类的任何更改(以及数据注释)都将丢失。。。

也许您会发现这个链接很有用。EF验证只需添加具有所需验证的元数据类:

[MetadataType(typeof(UserMetadata))
public partial class User
{
  ...
}
public class UserMetadata
{
    [UserValidate("State")]
    public string State; 
   // etc.
}

希望这能帮助

相关内容

  • 没有找到相关文章

最新更新