我们有 Web MVC 应用程序,其中 EF 的 DbContext (POCO) 派生类由 StructureMap 管理并设置为 http 范围的生命周期。我们如何在延迟加载开启的情况下为我们的存储库设置特定的隔离级别(例如未提交的读取)?隔离级别通常由 TransactionScope 设置,它是一次性的,不应该像 DbContext 那样为整个 Http 请求而存在。我们的 Controller 对所有这些数据库特定的东西一无所知,并且只使用存储库,但是 ViewModel 可以通过访问延迟加载的属性来自动启动 Db 查询。
感谢您的任何想法。
最佳答案
您可以创建custom action filter它将使用未提交读取的事务范围,并将该操作过滤器用于您想要此行为的操作。事务未绑定(bind)到存储库。事务由 Controller 或使用的服务层启动,因为业务逻辑定义了事务的边界。
关于asp.net-mvc - 如何为启用延迟加载的 MVC 应用程序应用事务隔离级别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7182851/