作为新来的实体框架,我真的很困扰如何处理这组问题。在我目前正在进行的项目中,整个网站与EF模型大量集成。首先,使用依赖注入引导程序来控制对EF上下文的访问。出于操作原因,我们无法使用DI库。我删除了它,并根据需要使用了上下文对象的单个实例的模型。我开始得到以下例外:.NET实体框架和事务
类型'XXX'已被映射多次。
我们得出的结论是上下文的不同实例导致了这个问题。然后我将上下文对象抽象为每个线程/页面正在访问的单个静态实例。我现在得到几个有关交易的例外之一:
新事务是不允许的,因为会话中有其他线程正在运行 。
事务操作无法执行,因为有 挂起的请求处理此事务。
当分配给命令的 连接处于未决的本地事务中时,ExecuteReader需要该命令进行事务。 命令的Transaction属性尚未初始化。
这些异常中的最后一个发生在加载操作上。我没有试图在失败的线程上将上下文状态保存回Db。还有另一个线程正在执行这样的操作。
这些例外是最好的,但我设法让网站进入新的连接被拒绝的状态,由于交易锁定。不幸的是我找不到例外细节。
我想我的第一个问题是,如果从静态单个实例使用EF模型?另外,是否可以删除EF中的事务处理?我一直在使用,但没有成功TransactionScope
对象试过......
说实话我很多困在这里,并不能明白为什么(应该是什么)相当简单的操作,造成这样的问题...
相关:http://stackoverflow.com/questions/10585478/one-dbcontext-per-web-request-why – Steven 2012-09-13 09:29:39
这太糟糕了,你不能使用IOC引导程序,因为解决方案与[Ninject](http ://www.ninject.org/)将是一个 “普通的” 实例绑定到_request scope_,如其他人建议:'kernel.Bind>()为了>( ).InRequestScope();' - 是**'InRequestScope' ** –
drzaus
2013-07-03 13:56:52