[英]Use class object across different versions of same assembly using Reflection
[英]Using the same DbContext object across different controllers
我正在编写MVC 5 Internet应用程序,并且在跨不同的控制器使用相同的实例化DbContext
对象时遇到问题。
我想要这样做是因为我正在不同的控制器中检索某些相同的数据,并且DbContext
类的内置缓存功能将使许多数据库事务最小化。
这是一些代码来解释:
public class TestController1 : Controller
{
private CanFindLocationDatabaseContext db = new CanFindLocationDatabaseContext();
}
public class TestController2 : Controller
{
private CanFindLocationDatabaseContext db = new CanFindLocationDatabaseContext();
}
编写此代码的最佳方法是什么,这有什么缺点? 每个用户应该拥有自己的DbContext对象,还是所有用户只有一个? 在进行编码之前,我应该注意什么? CRUD动作发生时是否可能发生潜在冲突?
提前致谢。
这可能会对您有帮助,如果这是您要问的内容,或者我可以理解。 您可以创建一个BaseController,在其中可以创建DbContext实例。 之后,您可以在每个Controller中继承此Basecontroller。
public class BaseController : Controller
{
public BaseController()
{
CanFindLocationDatabaseContext db = new CanFindLocationDatabaseContext();
}
}
现在像这样在所有控制器中继承它:
public class YourController:BaseController
{
public ActionResult Hello()
{
//us your db instance here now
}
}
您还可以将类用作包装器,并为dbcontext放置静态引用。
对于所有控制器,您不应具有相同的dbContext。 这样做不是一个好习惯,因为那样一来,框架必须跟踪更多的实体,并且如果EF方面出现问题,也将很难调试。 每个控制器类使用一个dbContext。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.