我們正在研究用動態數據構建應用程序。我們想要做的是運行一些業務規則(規則看起來在應用程序之外或者回到數據庫中,而不是驗證規則)。當這些規則運行時,我們想返回一個枚舉的驗證錯誤列表。ASP.Net動態數據 - 你可以攔截保存嗎?
問:
是否有在ASP.Net動態數據的方式做某種「Context.Validate()」前的保存,所以我們可以得到業務規則驗證錯誤?
謝謝:)
我們正在研究用動態數據構建應用程序。我們想要做的是運行一些業務規則(規則看起來在應用程序之外或者回到數據庫中,而不是驗證規則)。當這些規則運行時,我們想返回一個枚舉的驗證錯誤列表。ASP.Net動態數據 - 你可以攔截保存嗎?
問:
是否有在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.
}