[英]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.