如何为延迟加载的MVC应用程序应用事务隔离级别?

时间:2011-08-24 22:01:39

标签: asp.net-mvc entity-framework transactions structuremap transactionscope

我们有web MVC应用程序,其中EF的DbContext(POCO)派生类由StructureMap管理并设置为http-scoped生命周期。我们如何为延迟加载的存储库(例如Read Uncommitted)设置特定的隔离级别?隔离级别通常由TransactionScope设置,它是一次性的,不应该像DbContext那样为整个Http请求生存。我们的控制器对所有这些特定于数据库的内容一无所知,只能使用存储库,但ViewModel可以通过访问延迟加载的属性自动启动Db查询。 感谢任何想法。

1 个答案:

答案 0 :(得分:1)

您可以创建custom action filter,它将使用未提交读取的事务范围,并将该操作过滤器用于您希望此行为的操作。事务未绑定到存储库。事务由控制器或使用的服务层启动,因为业务逻辑定义了事务的边界。