当前位置: 首页 > 编程语言 > C#

如何使用存储库为所有实例使用一个数据库上下文?分享

时间:2023-04-10 16:42:06 C#

如何使用存储库为所有实例使用一个数据库上下文?我在构建MVC时做错了,因为我不知道IEntityChangeTracker的多个实例不能引用实体对象。错误。我的设置如下:我有一个访问数据库的存储库,它创建了一个dbcontext实例,我有控制器实例化他们需要的管理器,并且管理器都实例化他们自己的存储库。问题来了,当控制器使用多个管理器收集数据,然后尝试创建一个使用这些数据的对象时,将对象添加到dbcontext时会出现上述错误。我了解了UnitOfWork模式,但重构我的代码似乎需要做很多工作。是否有快速修复来更新数据库并避免错误?谢谢。我认为的快速修复方法之一是添加依赖注入。当然,理想情况下,世界存储库应该只有DbContext实例,并且不知道它是如何创建的。您没有提供任何代码示例,所以我将提供一个非常简单的代码示例。在此示例中,Autofac用作IoC容器。在Global.asax.Application_Start方法中编写此代码。varbuilder=newContainerBuilder();builder.RegisterType().As().InstancePerRequest();然后在您的存储库中:publicclassRepository1{publicIYourDbContextDbContext{get;私有集;}publicRepository1(){//之前可能是这样//DbContext=newYourDbContext();//从IoC容器获取DbContextDbContext=(IYourDbContext)DependencyResolver.Current.GetService(typeof(IYourDbContext));如果您不想添加额外的库,可以将DbContext实例保存在HttpContext.Current.Items中。以上是C#学习教程:Howtouseadatabasecontextforallinstancesusingtherepository?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: