【发布时间】:2011-07-20 14:05:44
【问题描述】:
我正在开始一个新项目,并希望将事情做得比以前更好。我将温莎用于 DI,但效果并不好。我一直在关注使用 NuGet Ninject MVC 3 包来处理 DI。
我在 Google 上搜索了好几个小时,发现了很多关于 Ninject 的有用建议(特别是喜欢过滤器 DI 的东西),但没有任何东西能真正回答以下燃烧场景......
场景:
- 我有一个用于持久性的 SQL Server 数据库。我希望对数据库的所有访问都在一个事务中。
- 我将使用存储库来访问存储在数据库中的域对象。
- 控制器可能需要使用多个存储库来完成它的工作,因此数据访问需要基于每个存储库的相同实例以避免锁定问题。
- 应根据对 Web 应用程序的请求进行数据访问。
我的困惑/思考:
- 如果 Ninject 将适当的数据库工厂或上下文推送到我的所有存储库,那么如果发生异常,我应该在哪里(以及如何)将代码提交成功完成或回滚?理想情况下,您不希望对每个控制器操作都执行此操作,因此我猜测全局 asax EndRequest 事件,但如何知道是提交还是回滚。
【问题讨论】:
标签: asp.net-mvc-3 ninject data-access-layer