DBContext如何与C#中的多个用户会话一起使用

时间:2019-04-16 08:36:52

标签: c# entity-framework

我有一个MVC Web应用程序项目以及一个类库项目。现在,我正在尝试实现实体框架事务。因此,我决定采用Singleton模式,在其中可以使用整个Transaction中可用的单个DbContext对象。但是后来,我发现Factory&UoW模式比Singleton更合适。但是,我有几个问题,而且我还没有从网上找到答案。

  1. 当使用Factory&UoW模式为整个项目使用单个DbContext时,如果有1个以上的用户尝试执行相同的操作,将会发生什么。他们将在同一个DbContext上工作还是将为每个用户提供唯一的DbContext以便在其Transaction中工作?
  2. 如果在事务数量上用户数在同一个DbContext上工作,那么如何管理并发?

    如果您能帮助我回答我的问题,那就太好了。

1 个答案:

答案 0 :(得分:0)

  1. 您不需要单个DbContext对象,根据设计,应随每个请求实例化该对象。

  2. 要处置对象,请选择using块,否则,如果要使用依赖项注入,则将通过依赖项注入/ IoC容器来解决。

  3. 关于并发Concurrency in Entity Framework

  

默认情况下,Entity Framework支持开放式并发。假设自加载实体以来未更改相同的数据,EF会将实体数据保存到数据库。如果发现数据已更改,则将引发异常,您必须解决冲突,然后再尝试保存。