2012-02-08 49 views
1

我想我正面臨一個我可以解決的架構問題:我正在開發一個使用實體框架代碼(v4.3 beta1)的Web應用程序。 另外,還有幾個發佈的Web服務。在asp.net應用程序中存儲DbContext的位置?

在單獨的類庫中,我有DbContext和al,實體。該庫由Web應用程序引用,顯而易見。

在 「數據」 庫中,我有一個靜態屬性持有德方面:

namespace MMOrpheus.Lib 
{ 
    public class Context 
    { 
     public static MMOrpheusDB MMO 
     { 
      get 
      { 
       if (HttpContext.Current != null && HttpContext.Current.Session["MMOEntities"] == null) 
       { 
        HttpContext.Current.Session["MMOEntities"] = new MMOrpheusDB(); 
       } 
       return HttpContext.Current.Session["MMOEntities"] as MMOrpheusDB; 
      } 
      set 
      { 
       if (HttpContext.Current != null) 
        HttpContext.Current.Session["MMOEntities"] = value; 
      } 
     } 
    } 
} 

MMOrpheusDB從繼承的DbContext。

所以問題是我不知道這是不對的。除此之外,我不認爲這個Context類應該使用System.Web!

關於如何組織這個項目的任何建議?

回答

2

您的問題的答案不是一個簡單的問題。

所有我建議首先,您使用控制框架(StructureMap,團結,...)的依賴注入&反轉。

如果你要存儲您的的DbContext,使用IOC將做起來很簡單。您可以定義您的上下文生命週期。我通常與PerRequest一起去。 每個Web請求的DbContext的一個實例。 DBContext以請求開始並以它結束。

但是沒有必要採用這種模式。你可以簡單地開始上下文當你需要它和處置它後使用它。

如果你喜歡第一種方法,搜索領域驅動設計,國際奧委會,單位工作,庫模式&等

+0

感謝阿夫欣GH,你給了很多閱讀有關 – 2012-02-08 11:48:38

相關問題