簡體   English   中英

在SubmitChanges()之前驗證Linq2Sql

[英]Validate Linq2Sql before SubmitChanges()

調用SubmitChanges() 之前,任何人都可以告訴我是否/如何在Linq2Sql中驗證數據上下文中的更改。 我的情況是我創建一個上下文,執行多個操作並添加許多插入以及其他處理任務,然后如果提交失敗則回滾。

我想做的是在完成某些任務后進行某種“Validate()”調用,這樣我就可以在提交整個作業之前處理它。

要獲取數據上下文中的所有更改,您可以調用

ChangeSet changes = dataContext.GetChangeSet();

// An IList<Object>
changes.Deletes;
changes.Inserts;
changes.Updates;

我所擁有的是每個值對象都有一個驗證方法。 我使用attibutes來定義不同類型的驗證。 我手動執行此操作的原因是因為我有一個數字可能是數據庫中的int和代碼,如果我保存年齡,則值1002可能無效。 所以我可以給出一系列的價值觀等等。

如果每個值對象都從基礎對象繼承,則可以更輕松地迭代它們。 假設您的基類上有Validate方法。

我會指出這個工作,你將不得不編輯生成的代碼,或滾動自己的值對象。 我通常會自行推出,因為我將它們用於驗證。

您還可以將OnValidate()函數與LINQ-to-SQL Entity的分部類一起使用。 然后在SubmitChanges()期間但在將數據發送到數據庫之前調用OnValidate() OnValidate()一個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. ...
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM