【发布时间】:2016-07-20 15:18:42
【问题描述】:
我正在使用 AutoFac 并有一个自定义缓存实现。当我注册缓存实现的类型时,我将缓存服务配置为 SingleInstance()。但是,这会提示数据库连接(使用 EF)出现问题,因为第二个并发请求会尝试访问已关闭的连接。
Builder.RegisterType<MyCachingDataService>().As<IMyCachingDataService>().SingelInstance();
因此我们删除了 SingleInstance() 并将其设置为每次调用的默认实例,现在的问题是,如果我们每次调用都执行一个实例,它有点违背缓存的目的,这样它的性能就会降低。
解决方法是什么,我做错了什么。
【问题讨论】:
-
这与 AutoFac 无关。您还应该指定您使用的 EF 版本并发布了一些代码
-
我刚刚更新了这个问题,显然我认为是AutoFac,因为我有连接问题以及我的缓存实现对象的单例性质。
-
您可以在没有 Autofac 的情况下复制此问题。只需将您的实体设置为静态成员并尝试重用它们,您将遇到同样的问题。如果您尝试在加载了已释放的上下文的实体上使用未填充的导航属性,它将引发异常。