我有一个3层方法的MVC 3应用程序。我的数据层包含edmx文件和一个t4模板,每当我的edmx文件发生变化时,它都会生成带有基本DataAnnotations的实体。业务验证和数据注记在层
此外,我正在使用以下来允许对现有实体和属性进行额外验证。这一个允许我将自动生成的DataAnnotations与自己的书面注释结合起来。
[MetadataType(typeof (PersonMetaData))]
public partial class Person
{
}
public class PersonMetaData
{
[RegularExpression(@"(\w|\.)[email protected](\w|\.)+", ErrorMessage = "Email is invalid")] public string Name;
}
的进一步深入,我发现下面的文章http://www.howmvcworks.net/OnModelsAndViewModels/ExtendingTheModelBinderForEnhancedValidation
这样我就可以使用现有的ASP.NET MVC的逻辑和实现,如果需要的话,一个自己的验证方法。这个例子适用于我。不幸的是,因为我有一个3层应用程序,并且想要在业务逻辑(而不是数据层)中验证我的实体,所以我无法将任何对业务逻辑的调用放入Validate方法中,而不会创建循环依赖项。
是否有更好的方法来结合自动生成的DataAnnotations,自己的validationextensions,业务逻辑验证和IBindingValidatable方法?
谢谢