2013-02-15 61 views
0

我一直無法在網上找到任何答案。如何構造Entityframework數據庫上下文

  1. 使用多個數據庫上下文反對使用單個的優點/缺點是什麼?

  2. 是下面的解決方案確定設置相關對象,(保存到數據庫時)(以使其更有效,因爲我已經有了ID,無需提取物)

  3. 我聽說它的reccomme使用上下文,如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; 
    } 
    } 
    

回答

1
  1. 使用多個上下文始終是一個缺點,除非你別無選擇(例如,您的數據分佈在多個數據庫分散)。

  2. 差不多,但是你可以簡化你的新車初始化:

    private void QuickSetCar(int CarID) { 
        if(this.Car == null) 
        this.Car = new Car(){ ID = CarID }; 
    } 
    
  3. 這很好。在Web事務(請求/響應)的持續時間內,不要使用多於一個的上下文,並且不要將其保留更長的時間。

+0

非常感謝謝謝! – Baconbeastnz 2013-02-15 07:34:05

1
  1. 多個上下文通常只對分佈在多個數據庫非常大的模型有用。如果你正在開始一個項目,通常最好使用一個上下文。

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

  3. 在控制器內創建上下文當然是可行的,但我強烈建議不要這樣做。這種方法經常在演示和基本腳手架中顯示,但在現實世界的應用中,這不是一個好主意。大量的代碼通常會在每個控制器中安裝和查詢上下文來複制。還有一箇中央存儲庫將允許更容易的緩存來提高性能。

+0

謝謝!回覆:#3,我的代碼是乾的,你是什麼意思的中央存儲庫? – Baconbeastnz 2013-02-15 07:33:19

+1

回購只是與上下文進行所有交互的中心位置。如果您打開並查詢每個控制器中的上下文,則代碼很難隨着項目的增長而變爲DRY。存儲庫模式的一個好起點是在http://blog.appharbor.com/2012/10/31/repository-pattern-and-convention-based-entity-framework-code-first – Judo 2013-02-15 07:53:03

+0

謝謝隊友感謝! – Baconbeastnz 2013-02-15 10:50:30

相關問題