任何人都可以告訴我您是否/如何驗證Linq2Sql中的數據上下文中的更改調用SubmitChanges()之前。我遇到的情況是我創建了一個上下文,執行多個操作並在其他處理任務旁邊添加了許多插入,然後在提交失敗時回滾。在SubmitChanges之前驗證Linq2Sql()
我希望做的是在某些任務完成後進行某種「驗證()」調用,以便在提交整個作業前處理它。
任何人都可以告訴我您是否/如何驗證Linq2Sql中的數據上下文中的更改調用SubmitChanges()之前。我遇到的情況是我創建了一個上下文,執行多個操作並在其他處理任務旁邊添加了許多插入,然後在提交失敗時回滾。在SubmitChanges之前驗證Linq2Sql()
我希望做的是在某些任務完成後進行某種「驗證()」調用,以便在提交整個作業前處理它。
要獲得所有在數據方面的變化,你可以調用
ChangeSet changes = dataContext.GetChangeSet();
// An IList<Object>
changes.Deletes;
changes.Inserts;
changes.Updates;
我所擁有的是每個值對象有一個validate方法。我使用attibutes來定義不同種類的驗證。我手動這樣做的原因是因爲我有一個數字,可能是數據庫中的一個int和代碼,如果我保存一個年齡,則值1002可能無效。所以我可以給出一系列的價值觀等。 。
如果每個值對象都從一個基礎對象繼承,它將使它們更容易迭代。假設你在你的基類中有一個Validate方法。
我會指出這個工作,你將不得不編輯生成的代碼,或者滾動你自己的值對象。我通常會推出自己的產品,因爲我如何使用它們進行驗證。
您還可以將OnValidate()
函數與LINQ-to-SQL實體的部分類一起使用。 OnValidate()
將在SubmitChanges()
期間被調用,但在數據發送到數據庫之前。 OnValidate()
的一個好處是您可以通過ChangeAction
枚舉區分CRUD操作。
例如,
public partial class YourEntity
{
partial void OnValidate(System.Data.Linq.ChangeAction action)
{
if(action == System.Data.Linq.ChangeAction.Insert)
// Do insert
... etc. ...
}
}
都沒發現.GetChangeSet()方法之前!感謝那! +1 – StevenMcD 2009-07-31 14:16:14