如何处理过程执行异常

本文关键字:过程 执行 异常 处理 何处理 | 更新日期: 2023-09-27 18:08:51

我用这种方式调用过程参数(通过使用NHibernate会话):

var session = (NHibernate.ISession)GetConnection("BookDataBase");//NHibernate.ISession
var query = session.CreateSQLQuery("exec UpdateBook @BookId=:bookid");
query.SetInt32("bookid", bookId);
query.ExecuteUpdate();

这个工作得很好,除了一件事。这部分是在handler中调用的,所以在某些情况下,这部分会在一行中被调用两次(不同的更改,但相同的bookId),当然,它们可以同时运行。

所以,当这个部分试图第二次运行时,我得到这个异常:

事务未连接或已断开

我认为发生这种情况是因为当第二个更改试图执行过程时,第一个更改已经执行并关闭了事务。

我该如何预防?我需要能够同时执行两个程序。

如何处理过程执行异常

继@user1666620 -你可能应该关注这个…

每个请求的会话模式有一个问题实现。ASP。. NET是多线程的,会话正在进行当线程终止而不是请求结束时关闭。有许多关于如何管理每个请求会话的示例NHibernate有一个内置的NHibernate. context . websessioncontext我更倾向于使用依赖注入框架,比如Ninject。

NHibernate异常:Transaction not connected, or was disconnected

您需要确保Nhibernate在第一个查询完成后不会终止共享连接