gpt4 book ai didi

asp.net-mvc - ASP.NET MVC 2,Nhibernate 和跨层事务

转载 作者:行者123 更新时间:2023-12-04 10:07:10 24 4
gpt4 key购买 nike

我在 ASP.NET MVC 2、NHibernate 和 DDD 中创建一个解决方案。我正在使用半 CQRS 类型的模型。

ASP.NET Controller 将经过验证的消息发送到更新域对象状态的服务层。
我有我的域调度“事件”,然后这些事件被处理它们的“事件处理程序”捕获。这些事件处理程序中的每一个都可以访问存储库层并且可以提交域对象状态。

事件处理程序还使用(非 NHibernate )存储库将记录直接插入基于报告的表中。事件处理程序还可以执行与数据库无关的操作,例如发送电子邮件。

事件处理程序还可以更改对象的状态,从而创建新的事件集。

如何确保在单个 asp.net 请求期间发生的所有数据库操作都在单个事务中。
我一直在阅读一些博客(如 Kevin WilliamsMatt WrockDavy Brion )并获得了有关如何在 Begin 和 End Request 中启动 Session 对象的信息(我将再次使用 Structure Map 在这里)但不确定如何交易得以维持。可能在不同线程上调用开始和结束请求这一事实使情况更加复杂。

我的存储库类在其参数中采用 NHibernate ISession。如果我将 ISession 创建为 Hybrid Scope ( StructureMap ) 将确保在请求期间由 StructrueMap 传递的 ISession 参数保持不变。

如果我的问题不清楚,请提供建议并告诉我。

谢谢,

三月

三月

最佳答案

您可以考虑实现 Unit Of Work pattern对于每个 Web 请求。该工作单元创建一个 NHibernate session 并处理事务。您可以在 Web 上找到几种实现,例如 thisthis .

关于asp.net-mvc - ASP.NET MVC 2,Nhibernate 和跨层事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5445444/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com