C# 实体框架和DBContext问题

C# 实体框架和DBContext问题,c#,.net-4.0,entity-framework-4,database-concurrency,C#,.net 4.0,Entity Framework 4,Database Concurrency,我被警告不要在我的应用程序中使用实体框架的多个DBEntityContext。原因是并发访问数据库可能导致死锁 有人能证实这一点吗?如果这是真的,那么为DBContext实现单例对象是一个好主意吗 欢迎就此问题发表任何文章 提前感谢。在web应用程序中,您必须为每个已处理的web请求使用一个新的上下文实例,并在不再需要该实例后处理该实例。上下文和任何与EF相关的内容都不是线程安全的。此外,它还实现了工作单元和身份映射模式,这有助于使用上下文实例 死锁可能会发生,但这必须通过正确的事务设计来解决。

我被警告不要在我的应用程序中使用实体框架的多个DBEntityContext。原因是并发访问数据库可能导致死锁

有人能证实这一点吗?如果这是真的,那么为DBContext实现单例对象是一个好主意吗

欢迎就此问题发表任何文章


提前感谢。

在web应用程序中,您必须为每个已处理的web请求使用一个新的上下文实例,并在不再需要该实例后处理该实例。上下文和任何与EF相关的内容都不是线程安全的。此外,它还实现了工作单元和身份映射模式,这有助于使用上下文实例


死锁可能会发生,但这必须通过正确的事务设计来解决。

ObjectContext和DbContext不是线程安全的。看见如果在ASP.NET这样的多线程环境中使用它们,那么在使用单个实例时会遇到很大的麻烦。建议每个请求使用一个ObjectContext。ObjectContext必须在请求结束时处理。这篇文章可能会有帮助


有没有可能,你误解了你的顾问告诉你的死锁?可能他想警告你,如果使用ObjectContext的方式错误,可能会出现死锁。

你说的是什么类型的应用程序?谢谢你的回答,很好的链接,但是每个请求创建一个新的上下文不会比将contextobject作为一个单独的应用程序在应用程序生命周期中更具性能?明白了,我只是读了你的另一个答案,直到最后,它是有意义的,即使性能可能是一个问题。那么,我可以在ASP.NET MVC中为每个控制器设置一个上下文,并在控制器处理时处理它吗?