Ale*_*ril 3 c# nhibernate session
在Web应用程序中使用FluentNHibernate,我创建了一个单例SessionFactory类,具有以下功能:
SessionFactory.Instance //returns ISessionFactory
Run Code Online (Sandbox Code Playgroud)
以下是打开/关闭会话的常见/最佳做法吗?
using(ISession session = SessionFactory.Instance.OpenSession())
{
using(ITransaction transaction = session.BeginTransaction())
{
//some operation
}
}
Run Code Online (Sandbox Code Playgroud)
上面的代码将存在于给定实体的相应存储库类中.
我注意到有一个主题是创建一个HttpModule来在应用程序的开始和停止时打开会话,但我想知道这是情境还是更常见.
UPDATE
继续使用HttpModule,我有类似的想法:
使用存储库类,我基本上执行以下操作(config使用WebSessionContext):
using(ISession session = SessionFactory.Instance.GetCurrentSession())
{
using(ITransaction transaction = session.BeginTransaction())
{
//some operation
}
}
Run Code Online (Sandbox Code Playgroud)
如果您正在使用Web应用程序,我建议使用HttpModule打开会话并在请求周期关闭它.会话工厂我可能会在Application_Start上实例化.
对于存储库对象,我会通过构造函数将会话传递给它.
我个人认为存储库对象没有足够的信息来决定如何处理会话.
我想这取决于你的谈话
以下是一些实现方面的链接
注意会话可以注入Doa/respository.
对于一个完整的架构,请看一下尖锐的架构 <这是基于最佳实践,我会高度重新考虑它
Nhibernate ep 13的夏天是关于与Asp.Net的会议
| 归档时间: |
|
| 查看次数: |
9993 次 |
| 最近记录: |