c# - Nhibernate 事务 :Avoiding Nhibernate dependency in the service layer

标签 c# .net nhibernate transactions s#arp-architecture

Nhibernate 专家提倡的一种做法是做 all actions in inside a transaction.

在典型的 3 层 Web 架构中,Nhibernate 的依赖性仅限于数据层。

在这种情况下可以使用吗

  using (var tr = NHibernateSession.Current.BeginTransaction()) {

在 Controller 级别。这不会给服务层带来对Nhibernate的依赖吗?

最佳答案

解决此问题的一种方法是将 NHibernate session 和事务语义包装在您自己的抽象接口(interface)/实现类中。这样,如果您想说,切换到 Linq2Sql,您可以创建 L2S 实现。然而,这仍然意味着事务语义仍然在服务层,而不是 NHibernate 特定的调用。谷歌IRepository<T>有关如何执行此操作的许多示例。

但是,如果您不打算在将来关闭 ORM,有人可能会争辩说在服务层使用 NHibernate 不一定是一件坏事,因为 NHibernate 本身就是数据层的抽象。

关于c# - Nhibernate 事务 :Avoiding Nhibernate dependency in the service layer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2547539/

相关文章:

c# - Kendo 网格导出到 Excel 货币格式

c# - Entity Framework OnModel创建重复表

c# - 偶尔出现“无法初始化代理-没有 session ”的情况

c# - 仅当属性不为 null 时才进行条件依赖注入(inject)绑定(bind)

c# - 在加载时获取实际高度

c# - 如何迭代子列表中的元素,然后从列表中删除子列表?性能卓越

.net - 在屏幕中央显示 Windows 窗体(双屏)

c# - 使用 Aspose 将 HTML 转换为 PDF

c# - 安全句柄和句柄引用

select - NHibernate QueryOver CASE WHEN 计算列值