C# DBContext如何在C中处理多个用户会话#
我有一个MVC Web应用程序项目和一个类库项目。现在,我正在尝试实现实体框架事务。因此,我决定采用Singleton模式,在该模式中,我可以在整个事务中使用单个DbContext对象。但后来,我发现Factory&UoW模式比Singleton更合适。但是,我有几个问题,我还没有从网上找到答案C# DBContext如何在C中处理多个用户会话#,c#,entity-framework,C#,Entity Framework,我有一个MVC Web应用程序项目和一个类库项目。现在,我正在尝试实现实体框架事务。因此,我决定采用Singleton模式,在该模式中,我可以在整个事务中使用单个DbContext对象。但后来,我发现Factory&UoW模式比Singleton更合适。但是,我有几个问题,我还没有从网上找到答案 当我们使用Factory&UoW模式为整个项目提供单个DbContext时,如果有多个用户尝试执行相同的操作,会发生什么情况。他们将在同一个DbContext上工作,还是每个用户将被赋予在其事务中工作的
您不需要显式事务,
SaveChanges
在内部使用事务。只有当您遵循了试图将每个更改保存到数据库的错误做法时,才需要它们,这与UoW完全相反。DbContext意味着它是短暂的。使用这种方式,它是一个UoW容器-所有更改都保存在内存中,直到您在请求结束时调用SaveChanges()
。不需要显式事务。在web应用程序中决不能将DbContext用作单例L ASP.NET MVC教程显示在控制器操作本身中创建和处置的DbContext,或作为依赖项注入到具有瞬时或作用域生存期的构造函数中。在这两种情况下,构造函数的有效期与请求的有效期一样长,DbContext也是如此。好的,目前我有一个using
语句,它在执行任何CRUD操作的每个方法中初始化新的DbContext。如果我使用语句删除,并删除SaveChanges()
,则在执行最终提交之前,无法识别基于先前保存的条目工作的方法,因为更改尚未保存到数据库中。如何确保在事务中跟踪未提交的更改。不要使用
删除,不要删除保存更改
。DbContext就是这样工作的。当您以这种方式使用它时,没有理由使用显式事务,因为SaveChanges()
本身在内部使用事务,但我需要将SaveChanges()的数量包装到单个事务中。如何实现这一点??您不需要显式事务,SaveChanges
在内部使用事务。只有当您遵循了试图将每个更改保存到数据库的错误做法时,才需要它们,这与UoW完全相反。DbContext意味着它是短暂的。使用这种方式,它是一个UoW容器-所有更改都保存在内存中,直到您在请求结束时调用SaveChanges()
。不需要显式事务。在web应用程序中决不能将DbContext用作单例L ASP.NET MVC教程显示在控制器操作本身中创建和处置的DbContext,或作为依赖项注入到具有瞬时或作用域生存期的构造函数中。在这两种情况下,构造函数的有效期与请求的有效期一样长,DbContext也是如此。好的,目前我有一个using
语句,它在执行任何CRUD操作的每个方法中初始化新的DbContext。如果我使用
语句删除,并删除SaveChanges()
,则在执行最终提交之前,无法识别基于先前保存的条目工作的方法,因为更改尚未保存到数据库中。如何确保在事务中跟踪未提交的更改。不要使用
删除,不要删除保存更改
。DbContext就是这样工作的。当您以这种方式使用它时,没有理由使用显式事务,因为SaveChanges()
本身在内部使用事务,但我需要将SaveChanges()的数量包装到单个事务中。如何做到这一点??