我有一个控制台应用程序,其中有一个方法用于批量更新数据库中的记录。我们将NHibernate用于我们的webrole,并在单独的DLL中使用DAL。我在这个控制台应用程序中使用此DLL来更新数据库,但它无法正常工作。在经典ASP.NET中执行时,相同的方法非常有效。
我的代码草图如下:
var foo= Data.GetFoo.GetFoo2("xyz");
//update some records in foo
Data.GetFoo().Flush();
foo
被正确获取但Flush
不会更新数据库。
我已经尝试将属性current_session_context_class
更改为web,thead,thread-static,但都无济于事。没有任何例外。
编辑:
我认为问题在于使用控制台应用管理会话。目前的安排使用IHttpModule
其中
context.BeginRequest += BeginRequest;
context.EndRequest += EndRequest;
在Init( HttpApplication context )
方法中调用。我现在的问题是,我认为应该使用这个模块来使用Console App,我仍然想弄清楚。
@OskarBerggren我有一个扩展IHttpModule
的类。这是我传递给SessionProvider
类的内容。沿着这条路走下去:
protected ISession session
{
get
{
ISession _session = NHttpModule.GetCurrentSession();
return _session;
}
}