如何处理过程执行异常
本文关键字:过程 执行 异常 处理 何处理 | 更新日期: 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在第一个查询完成后不会终止共享连接