MVC 3数据库优先的客户端验证

时间:2011-09-13 10:22:14

标签: asp.net-mvc-3 entity-framework-4.1

如果我在我的实体类中添加[Required],那么不显眼的验证工作正常。

在我首先使用数据库(* .edmx)生成实体类的地方没有添加

[Required]

如果我在我的实体属性中手动添加[必需],例如

[Required]
public int {get;set;}
我更新edmx时会删除

[Required]

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

2 个答案:

答案 0 :(得分:3)

为您的实体创建一个分部类,并使用 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...
}

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

答案 1 :(得分:0)

这是ado.net团队的一个问题。我想当你首先使用数据库EF时,你的域模型会继承数据库的约束,因为数据库设计是你的应用程序逻辑的主设备。