2010-10-02 39 views
1

我正在使用EntityFramework 4的項目,我正在使用實體對象作爲我的業務對象。最近遇到了一個問題,我在用戶控件的using語句中聲明瞭上下文。該語句所在的方法返回了在另一個控件中使用的實體對象。所以我必須分離實體,然後將其附加到另一個控件的新上下文中。如果可能,我想避免這種情況。我在想的是我想在母版頁中聲明一個上下文,然後將其傳遞給需要它的任何頁面/用戶控件,以便它們都使用相同的上下文,而不必使用語句編寫所有這些。ASP.NET EntityFramework 4數據上下文最佳實踐

我的問題是:

1)它是一個不好的做法,聲明對Pre_Init/Page_Load中情境,然後激發Page_Unload處置呢?

2)如果是處理它們的最佳做法是什麼?

3)如果我確實去了在主頁面中聲明上下文的路徑,那麼將其傳遞給pages/usercontrols的最佳方式是什麼?

回答

4

最大的問題是,您已將EF上下文耦合到您的表示層。你遇到了問題分離的問題,它表現爲EF上下文混淆。

如果不知道應用程序的具體情況,典型的最佳做法是將EF內容封裝在存儲庫模式之外,而不是直接將您的上下文暴露給UI。使用存儲庫獲取您需要的實體並傳遞實體/模型。如果你有一個與父/子關係複雜的實體,如果你正在使用它們,那麼就急切地加載子實體。因此,您可以在單個使用語句中獲得所需的一切。

如果你想發佈代碼,我們可以得到更多的細節。但總結:

  • 不要把上下文以往用戶控制
  • 根據您的要求和適當的實體爲每個用戶控件的頂部獲取整個模型(在這個頂級的請求將成爲你處理上下文的使用陳述)
+0

好的。謝謝,這至少會讓我走上更好的道路。我想我只是不喜歡急於加載的東西的想法,以防我不需要使用它。 – William 2010-10-02 18:24:01