Asp.net mvc 3 首先在MVC 3数据库中进行客户端验证

Asp.net mvc 3 首先在MVC 3数据库中进行客户端验证,asp.net-mvc-3,entity-framework-4.1,Asp.net Mvc 3,Entity Framework 4.1,如果我在实体类中添加[Required],那么不引人注目的验证就可以了 [必需]未添加到我首先使用数据库(*.edmx)生成实体类的位置 如果我在实体属性中手动添加[Required],比如 [Required] public int {get;set;} [必需]将在我更新edmx时删除 所以,我的问题是,如果我在EF中首先使用数据库,如何执行客户端验证。这是ado.net团队的问题。我假设,当您首先使用数据库时,您的域模型继承了数据库的约束,因为数据库设计是应用程序逻辑的主要部分。为您的实

如果我在实体类中添加
[Required]
,那么不引人注目的验证就可以了

[必需]
未添加到我首先使用数据库(*.edmx)生成实体类的位置

如果我在实体属性中手动添加[Required],比如

[Required]
public int {get;set;}
[必需]
将在我更新edmx时删除


所以,我的问题是,如果我在EF中首先使用数据库,如何执行客户端验证。

这是ado.net团队的问题。我假设,当您首先使用数据库时,您的域模型继承了数据库的约束,因为数据库设计是应用程序逻辑的主要部分。

为您的实体创建一个分部类并使用MetadataType属性。见下例:

[MetadataType(typeof(MyEntity.Metadata))]
public partial class MyEntity
{
    private sealed class Metadata
    {
        [Required(ErrorMessage = "* required")]
        public string MyRequiredField { get; set; }
    }

    // Add other similar properties here...
}

此类将不受设计器生成的代码更改的影响。

为了明确起见,MyEntity是数据库中第一个生成的类,这也帮助了我