Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Nhibernate使用存储过程回滚并检查事务是否成功_C#_Sql_Nhibernate_Stored Procedures - Fatal编程技术网

C# Nhibernate使用存储过程回滚并检查事务是否成功

C# Nhibernate使用存储过程回滚并检查事务是否成功,c#,sql,nhibernate,stored-procedures,C#,Sql,Nhibernate,Stored Procedures,我有一个场景,其中需要运行一个存储过程。这个过程是一个高级的删除操作,涉及13个相互关联的表。但是,我还需要清除一些XML,但前提是该过程成功。这是我的第一个问题:如何确定CreateSQLQuery的过程是否成功?一旦确定,我将把XML delete作为func传递进来。如果失败了,那么我想回滚整个过程?如果我简单地调用回滚,数据似乎仍在删除 public void DeleteWithCondition(int id, func<bool> condition) {

我有一个场景,其中需要运行一个存储过程。这个过程是一个高级的删除操作,涉及13个相互关联的表。但是,我还需要清除一些XML,但前提是该过程成功。这是我的第一个问题:如何确定CreateSQLQuery的过程是否成功?一旦确定,我将把XML delete作为func传递进来。如果失败了,那么我想回滚整个过程?如果我简单地调用回滚,数据似乎仍在删除

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

        }
    }
public void DeleteWithCondition(int-id,func-condition)
{
使用(var session=\u factory.OpenSession())
使用(var transaction=session.BeginTransaction())
{
CreateSQLQuery(string.Format(“EXEC DeleteItem'{0}',id));
//检查存储过程成功的逻辑
如果(!条件())
transaction.Rollback();//如果逻辑失败,则回滚事务
}
}

会话。CreateSQLQuery(…).ExecuteUpdate()
将执行它,如果数据库这样说,则会异常失败。

会话。CreateSQLQuery(…).ExecuteUpdate()
将执行它,如果数据库这样说,则会异常失败。

会话。CreateSQLQuery(…).ExecuteUpdate()
将执行它,如果数据库这样说,则会异常失败。

会话。CreateSQLQuery(…).ExecuteUpdate()
将执行它,如果数据库这样说,则会异常失败。

您需要确保存储过程不创建自己的事务。您需要确保存储过程不创建自己的事务。您需要确保存储过程不创建自己的事务。您需要确保存储过程不创建自己的事务。您需要确保存储过程不创建自己的事务。