2012-07-25 78 views
2

有人能夠啓發我對「DbContext」和「DbSet」的預期使用(最佳實踐),其中數據使用者應該不依賴於EF什麼(100%POCO)。儘管我找到的所有示例都解釋瞭如何爲底層數據源(通常對應於RDBMS表)創建POCO類,但它們仍然向外界展示了「DbContext」和「DbSet」(包括MSFT自己的關於如何進行數據綁定的示例與這些類)。這似乎打敗或(嚴重)降低使用POCO的好處。 IOW,客戶仍然受限於EF,而不是一種更清潔(IMHO)的方法來創建一些內部使用EF的數據存儲項目,但只向用戶公開POCO。爲什麼EF上的所有文章似乎都忽略了這一點(我錯過了什麼)。謝謝。「DbContext」和「DbSet」應該暴露給純POCO應用程序

回答

3

您通常會創建一個使用DbContext的服務層(基於Repository模式)。它的作用是在數據庫和應用程序/客戶端之間進行調解。它將接受來自客戶的POCO並將POCO返還給客戶。這樣,客戶端知道存儲庫,但它不知道關於DbContext的任何信息。

一些更多的閱讀你:

http://blogs.microsoft.co.il/blogs/gilf/archive/2010/01/20/using-repository-pattern-with-entity-framework.aspx http://blogs.msdn.com/b/adonet/archive/2009/06/16/using-repository-and-unit-of-work-patterns-with-entity-framework-4-0.aspx

+1

感謝您的信息。我會研究這些鏈接,但乍一看它們看起來不過是基於接口的包裝器。這很好,而且這可能是我反正會採取的策略(或類似的策略),但我很好奇爲什麼這種類型的方法本身不是EF本身可用的。只有MSFT真的知道,但它是一個嚴重的即將到來的恕我直言(ORM本身不是即插即用的即插即用)。 – 2012-07-26 12:10:04