2012-07-14 108 views
1

有段時間我開始使用EF作爲DAL,並從教程和視頻中瞭解了存儲庫模式和工作單元模式。存儲庫模式和DAL沒有存儲庫模式的DAL中的區別?

關於存儲庫我瞭解到這是對DAL的抽象,它將業務邏輯與數據訪問代碼分開。此外,它避免了數據訪問代碼的聲譽,並有助於單元測試。

我明白存儲庫模式是製作DAL的一種特殊方式。但是它帶來了什麼?我沒有得到。我的困惑是製作DAL(一個單獨的類庫/項目),它也會帶來這些好處(從業務邏輯中分離數據訪問邏輯,保存數據訪問代碼聲譽,幫助進行單元測試等)。

可能我仍然缺少存儲庫patren的好處。請在此引導我。

+0

檢查這個答案http://stackoverflow.com/questions/5401957/repository-pattern-with-entity-framework/5402554#5402554 – Eranga 2012-07-14 05:03:59

+0

[庫模式VS DAL(HTTP的可能重複:// stackoverflow.com/questions/291344/repository-pattern-vs-dal) – nawfal 2013-02-16 07:57:06

回答

1

數據訪問層應該處理像數據庫這樣的數據源,但要實現一些更高級別的目標,如MSDN所述,您需要存儲庫模式。

作爲每MSDN

  • 你想最大化可以與 自動化測試的代碼量和數據層,以支持單元測試隔離。
  • 您可以從多個位置訪問數據源,並且想要應用集中管理的一致訪問規則和邏輯 。
  • 您希望實施和集中數據源的緩存策略。您想要通過 將業務邏輯與數據或服務訪問邏輯分開來改進代碼的可維護性和可讀性。
  • 您想要使用強類型的業務實體,以便您可以在編譯時而不是在運行時識別問題。
  • 您想 將行爲與相關數據關聯。例如,您希望 計算字段或實施實體內數據元素之間的複雜關係或業務規則 。
  • 您想要應用 域模型來簡化複雜的業務邏輯。
+0

如果是DAL(沒有存儲庫),那麼我會有一個只有DAL類的地方,只有我會做改變。我無法真正得到它的好處。 – user576510 2012-07-14 04:54:20