我首先爲每個實體創建了一個新的存儲庫接口,例如IClientRepository。然後,我爲每個實體做了一堂課,例如SqlClientRepository。我爲很多實體做了這個,然後意識到他們都有相同的方法:添加,更新,刪除,GetAll。存儲庫模式問題
所以我意識到,我應該只是做一個接口,而不是爲每個接口單獨一個。
的問題是,現在我的依賴注入將無法工作,因爲我可以在接口只映射到一個存儲庫:
Bind<IClientRepository>().To<SqlClientsRepository>().WithConstructorArgument("connectionString", WebConfigurationManager.ConnectionStrings["MyDb"].ConnectionString);
唯一的變通辦法,我可以看到的是所有存儲庫的組合或回到我的第一次嘗試。使用第一次嘗試還將允許我改變某些實體的返回類型,例如IClientRepository.Add()可以返回新的客戶端的ID,而其他一些實體可能不需要它。
欣賞任何想法。
是的,我忘了提及,作爲一種選擇,我實際上已經做到了。讓所有這些接口都是空白的(現在還沒有需要的方法)似乎很奇怪。還有,如果我想爲一個實體返回不同的返回類型,就像我在我的問題中提到的那樣? – Joe 2011-04-05 22:07:38
如果你想在少數情況下返回不同的東西,你可以把它放在你的特定接口上 - 除非你希望在你的基礎上添加/刪除/所有等等,在這種情況下,你應該考慮不使用baserepository所有? – 2011-04-06 13:53:25