我无法在网上找到任何答案。
使用多个DB上下文对使用单个内容有什么优点/缺点?
下面的解决方案是否可以设置相关对象,(保存到DB时)(为了提高效率,因为我已经有了ID,不需要获取对象)
我听说它重新使用像Using(MyContext c = MyContext) {}
这样的上下文,目前我正在使用默认的MVC方式,在控制器中实例化上下文,这样可以吗?
Person P = new Person();
P.QuickSetCar(CarID);
db.People.Add(P);
db.saveChanges();
和
private void QuickSetCar(int CarID)
{
if(this.Car == null) {
Car C = new Car();
C.ID = ID;
this.Car = C;
}
}
答案 0 :(得分:1)
除非您别无选择(例如,您的数据分散在多个数据库中),否则使用多个上下文始终是一个缺点。
几乎可以,但您可以将新车初始化简化为:
private void QuickSetCar(int CarID) {
if(this.Car == null)
this.Car = new Car(){ ID = CarID };
}
没关系。只是不要在Web事务的持续时间(请求/响应)中使用多个上下文,并且不要将其保留的时间超过这个。
答案 1 :(得分:1)
多个上下文通常仅适用于分布在多个数据库中的超大型模型。如果您正在启动项目,通常最好使用单个上下文。
您使用ID的方法很好。
在控制器中创建上下文肯定是可行的,但我强烈建议不要这样做。这种方法通常在演示和基本脚手架中显示,但在实际应用中,这不是一个好主意。通常通过在每个控制器中实例化和查询上下文来复制大量代码。此外,还有一个中央存储库可以更容易地进行缓存以提高性能。