相关疑难解决方法(0)

.NET实体框架和事务

作为实体框架的新手,我真的很痴迷于如何处理这一系列问题.在我目前正在进行的项目中,整个站点与EF模型高度集成.首先,使用依赖注入引导程序控制对EF上下文的访问.出于操作原因,我们无法使用DI库.我删除了它并在需要时使用了上下文对象的各个实例的模型.我开始得到以下异常:

"XXX"类型已多次映射.

我们得出结论,背景的不同实例导致了这个问题.然后,我将上下文对象抽象为一个静态实例,每个线程/页面都访问该实例.我现在得到关于交易的几个例外之一:

不允许新事务,因为会话中正在运行其他线程.

无法执行事务操作,因为存在处理此事务的待处理请求.

当分配给命令的连接处于挂起的本地事务中时,ExecuteReader要求该命令具有事务.该命令的Transaction属性尚未初始化.

最后一个异常发生在加载操作上.我没有尝试将上下文状态保存回失败的线程上的Db.然而,有另一个线程执行这样的操作.

这些例外情况最多是间歇性的,但我设法让网站进入一个由于事务锁定而拒绝新连接的状态.不幸的是我找不到异常细节.

我想我的第一个问题是,EF模型是否应该从静态单个实例中使用?此外,是否可以消除EF中的交易需求?我试过使用一个TransactionScope没有成功的对象......

说实话,我在这里很多,并且无法理解为什么(应该是什么)相当简单的操作导致这样的问题......

.net entity-framework sql-server-2005

32
推荐指数
2
解决办法
2万
查看次数

asp.net mvc 4 - 好的是每个线程共享DbContext?

每个Web请求一个DbContext ...为什么?

我的理解是不应该在并发Web请求之间共享DbContext实例,所以绝对不能跨线程.但是如何在非并发Web请求中共享它呢?

由于线程敏捷性(ASP.Net中线程敏捷性的含义是什么?),我是否正确,一个线程可以在它死之前处理多个Web请求?

如果是这样,依赖为每个线程注入DbContext实例是否安全?

原因是我使用Unity,它不包括每个请求的生命周期选项.从MVC,EF - DataContext单例实例Per-Web-Request在Unity中,我想我可以使用自定义LifetimeManager; 我只是想知道使用PerThreadLifetimeManager是否安全和充足.

asp.net-mvc entity-framework dependency-injection unity-container dbcontext

4
推荐指数
1
解决办法
2888
查看次数