我目前正在嘗試推行項目庫我工作的幾個不同的方法,目前有通用的方法,一個存儲庫上是這樣的:具有通用方法的單個存儲庫...壞主意?
public interface IRepository
{
T GetSingle<T>(IQueryBase<T> query) where T : BaseEntity;
IQueryable<T> GetList<T>(IQueryBase<T> query) where T : BaseEntity;
T Get<T>(int id) where T : BaseEntity;
int Save<T>(T entity) where T : BaseEntity;
void DeleteSingle<T>(IQueryBase<T> query) where T : BaseEntity;
void DeleteList<T>(IQueryBase<T> query) where T : BaseEntity;
}
這樣我可以只需將一個存儲庫注入一個類並使用它來獲得我需要的任何東西。
(順便說一下,我用流利的NHibernate作爲我的ORM,與會話,每個Web請求的模式,並利用注入我的Structuremap庫)
這似乎爲我工作 - 方法我在這個存儲庫上定義了我需要的一切。但是,在我所有的網絡搜索中,我還沒有發現其他人使用這種方法,這讓我覺得我錯過了一些東西......這是否會導致我的問題,因爲我增長了我的應用程序?
我讀了很多人在討論如何爲每個根實體創建一個存儲庫 - 但是如果我用一些接口標識根實體並且限制泛型方法只允許實現那個接口的類,那麼我是不是實現了同樣的事情?
提前感謝任何產品。
這是一個基於觀點的問題。到目前爲止所有的答案都一樣。經過少許修改,這個更適合https://softwareengineering.stackexchange.com/。 – 2017-10-09 08:07:28