Qui*_*Par 4 .net c# nhibernate transactions s#arp-architecture
Nhibernate专家倡导的一种做法是在交易中做所有行动.
在典型的3层Web架构中,Nhibernate依赖性受限于数据层.
在这种情况下,使用起来很好
using (var tr = NHibernateSession.Current.BeginTransaction()) {
Run Code Online (Sandbox Code Playgroud)
在控制器级别.这不会将Nhibernate依赖于服务层吗?
解决这个问题的一种方法是将NHibernate会话和事务语义包装在您自己的抽象接口/实现类中.这样,如果你想说,切换到Linq2Sql,你可以创建一个L2S实现.但是,这仍然意味着事务语义仍将在服务层中,而不是NHibernate特定的调用.Google IRepository<T>提供了许多如何做到这一点的例子.
但是,如果您不打算在将来切换ORM,可以说在服务层中使用NHibernate并不一定是坏事,因为NHibernate本身就是对数据层的抽象.
| 归档时间: |
|
| 查看次数: |
1161 次 |
| 最近记录: |