這是我通常在我的實現中執行的方式。
一個通用接口,IEntityRepository定義您的基本CRUD結構。在我實現我定義了以下成員:
- 插入
- 更新
- 刪除
- 獲取
- GetPaged
- GETALL
- 查找(此人使用謂詞生成器生成where子句)
我創建了另一個繼承IEntityRepository的接口IMyentityRepository。這允許我添加任何特定於實體的成員,並且在需要時仍然可以使用DI。然後創建我的密封類MyentityRepository,繼承IMyentityRepository並實現所有成員。
當您使用依賴注入時,您可以爲MyentityRepository的具體類型註冊接口(IMyentityRepository)。
就我而言,我並沒有真正完成。我在存儲庫之上創建了一個服務層來封裝它,並以更一般的方式公開它。例如,假設您想爲您的用戶創建一個帳戶,這可能涉及比創建數據庫記錄更多的工作。在您的服務中,您將有一個名爲CreateUser()的成員,它可能會在其實現中調用多個存儲庫成員。 我的服務層與我的存儲庫層相同。我有通用的CRUD成員IEntityService,實體特定成員IMyentityService和MyentityService實現。 MyentityService類將需要一個IMyentityService實例(您可以將其注入到您選擇的IoC框架中)您的服務層也可以執行驗證和任何業務邏輯。我在控制器中進行驗證。好吧,從技術上講,我調用它我的控制器,然後得到結果,然後我可以寫入ModelState。
希望有所幫助。
您是否正在創建一個接口,然後爲那些只獲取存儲庫的具體類? – TampaRich 2009-06-09 00:52:08