簡體   English   中英

Nhibernate回滾並使用存儲過程檢查事務是否成功

[英]Nhibernate Rollback and Check success of Transaction with Stored Procedure

我有一個需要運行存儲過程的場景。 此過程是高級刪除,涉及13個相關表的某個位置。 但是,我也需要清除一些XML,但前提是proc成功。 這是我的第一個問題: 如何確定proc成功執行CreateSQLQuery? 確定后,我將XML Delete作為功能傳遞進來。 如果失敗了,那么我想回滾整個事情。還有第二個問題: 如何對存儲過程進行回滾? 如果我簡單地調用回滾,數據似乎仍會刪除。

public void DeleteWithCondition(int id, func<bool> condition)
    {

        using (var session = _factory.OpenSession())
        using (var transaction = session.BeginTransaction())
        {

            session.CreateSQLQuery(string.Format("EXEC DeleteItem '{0}'", id));

            //Logic to check success of stored proc

            if (!condition())
                transaction.Rollback(); //If logic fails, then roll back transaction

        }
    }

session.CreateSQLQuery(...).ExecuteUpdate(); 將執行它,並且如果數據庫顯示異常則失敗。

暫無
暫無

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

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