我们正在考虑使用动态数据构建应用程序。我们想做的是运行一些业务规则(查看应用程序外部或返回数据库的规则,而不是验证规则)。运行这些规则时,我们希望返回验证错误的枚举列表。
问题:
ASP.Net 动态数据中是否有办法在保存之前执行某种“Context.Validate()”,以便我们可以得到业务规则验证错误?
谢谢 :)
我们正在考虑使用动态数据构建应用程序。我们想做的是运行一些业务规则(查看应用程序外部或返回数据库的规则,而不是验证规则)。运行这些规则时,我们希望返回验证错误的枚举列表。
问题:
ASP.Net 动态数据中是否有办法在保存之前执行某种“Context.Validate()”,以便我们可以得到业务规则验证错误?
谢谢 :)
截取保存的方式取决于您使用的对象/关系映射器 (O/RM)、LinqToSQL 或实体框架。
如果您使用的是 LinqToSql,请参阅此演练: http: //msdn.microsoft.com/en-us/library/bb629301 (v=vs.100).aspx
如果您使用的是实体框架,请参阅此链接:http: //msdn.microsoft.com/en-us/data/gg193959.aspx
您可以将“OnValidate”方法添加到 Linq 表的部分类。然后,您可以在此方法中执行您需要的任何自定义验证,如果某些事情未能满足您的业务规则,您可以做出适当的响应,例如抛出 ValidationException。这将阻止数据保存到数据库中。
[MetadataType(typeof(LinqClassNameMetadata))]
public partial class LinqTableClassName
{
//HERE IS THE SOLUTION
partial void OnValidate(System.Data.Linq.ChangeAction action)
{
//Implement business rules here
//If something is wrong, you can do something like
throw new ValidationException("assert whatever is wrong");
}
}
public class LinqClassNameMetadata
{
//Just an example
[Required]
public object WhateverColumn;
//etc.
}