2009-10-25 67 views

回答

6

DataContext不是存儲庫模式,它是活動的記錄模式。 一旦你明白了兩者的區別,你就會明白對你的問題的迴應。

Active Record是面向對象的數據庫中的數據視圖。

存儲庫是一個存在於您的域模型中的對象,如果有的話,這意味着它的公共接口與您的數據訪問技術完全分離。

您使用LINQ或SQL來使用DataContext查詢您的數據庫,並且它很有意義,因爲LINQ和SQL非常適合查詢數據。

但是,當您查詢您的存儲庫時,由於我們更多地討論域對象而不是數據,因此我們使用Specification Pattern,它實際上是一種更適合您的域的迷你查詢語言。

簡而言之,Active Record =數據庫和數據訪問,Repository = Domain模型。理想情況下,你的客戶必須能夠理解你的領域模型的設計(所以你可以知道你的存儲庫和規範類),但是他不明白DataContext是什麼,因爲它是開發人員的管道工程。

所以要清楚的是,「C#2.0中存儲庫模式的一個例子」並不是真正應該搜索的內容,「存儲庫模式的一個例子」是,但內部實現將使用傳統的ADO,而不是DataContext的。

2

你可以看到一個ASP.NET here的例子,但我認爲你可以理解這個想法。

+0

我認爲他們正在問一個特定於.NET 2.0的示例 – RichardOD 2009-10-25 19:20:13

+0

是的。 – anonymous 2009-10-25 19:22:47