如何构建Entityframework DB上下文

时间:2013-02-15 04:56:22

标签: asp.net-mvc entity-framework

我无法在网上找到任何答案。

  1. 使用多个DB上下文对使用单个内容有什么优点/缺点?

  2. 下面的解决方案是否可以设置相关对象,(保存到DB时)(为了提高效率,因为我已经有了ID,不需要获取对象)

  3. 我听说它重新使用像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;
     }
    }
    

2 个答案:

答案 0 :(得分:1)

  1. 除非您别无选择(例如,您的数据分散在多个数据库中),否则使用多个上下文始终是一个缺点。

  2. 几乎可以,但您可以将新车初始化简化为:

    private void QuickSetCar(int CarID) {
      if(this.Car == null)
        this.Car = new Car(){ ID = CarID };
    }
    
  3. 没关系。只是不要在Web事务的持续时间(请求/响应)中使用多个上下文,并且不要将其保留的时间超过这个。

答案 1 :(得分:1)

  1. 多个上下文通常仅适用于分布在多个数据库中的超大型模型。如果您正在启动项目,通常最好使用单个上下文。

  2. 您使用ID的方法很好。

  3. 在控制器中创建上下文肯定是可行的,但我强烈建议不要这样做。这种方法通常在演示和基本脚手架中显示,但在实际应用中,这不是一个好主意。通常通过在每个控制器中实例化和查询上下文来复制大量代码。此外,还有一个中央存储库可以更容易地进行缓存以提高性能。