【发布时间】:2016-08-17 17:14:59
【问题描述】:
我有一个可以在我的开发环境中正常工作的 N 层解决方案。显然它也适用于生产环境,但有时执行失败。我不明白为什么。我只知道数据库没有任何变化,没有看到有用的错误,也没有写入日志。 我的假设是并发问题。我认为在初始化实体框架上下文后尝试执行多个选择时会失败。
这里是我的解决方案的结构
在外观中,我注入了实体框架上下文。这里是我的web.config上服务接口的配置:
<containers>
<container>
<types>
<register type="it.MC.IContext.IDataContext, IContext"
mapTo="it.MC.EntityFrameworkContext.PublicAreaContext, EntityFrameworkContext">
<lifetime type="singleton" />
</register>
<register type="it.MC.IFacade.IPublicAreaFacade, IFacade"
mapTo="it.MC.Facade.PublicAreaFacade, Facade">
<interceptor type="TransparentProxyInterceptor" />
<lifetime type="singleton" />
<constructor>
<param name="context" type="it.MC.IContext.IDataContext, IContext"/>
</constructor>
</register>
</types>
</container>
</containers>
如您所见,我的上下文和外观是单例的。我认为两者都是错误的。我认为实体Framewrk上下文的两个外观都应该是每个请求的实例。我认为这也将解决并发问题。
谁能帮我更正我的代码?
谢谢
【问题讨论】:
标签: entity-framework concurrency asp.net-web-api2 unity-container