我正在更改企業會計應用程序的體系結構。我打算使用IRepositoy <TDataModel>模式,但有一點區別。我將爲來自基礎IRepository <TDataModel>的每個實體創建一個接口。例如,如果我的實體是客戶,產品和訂單,然後我將不得不知識庫<T>和存儲庫每個實體
IClientRepository:IRepository <ClientModel>
IProductRepository:IRepository <產品型號>
IOrderRepository:IRepository <OrderModel>
public interface IRepository<TDataModel, TId>
{
TDataModel Get(TId Id);
IList<TDataModel> List();
TDataModel Add(TDataModel Item);
TDataModel Add(TDataModel Item, IContext executingContext);
void Update(TDataModel Item);
void Update(TDataModel Item, IContext executingContext);
bool Delete(TId Id);
bool Delete(TId Id, IContext executingContext);
IList<TDataModel> Where
(System.Linq.Expressions.Expression<Func<TDataModel, bool>> criteria);
}
public interface IProductRepository : IRepository<DataModel.Product, int>
{
}
的原因使用這種方法是我想在DAL中設置一些域模型的屬性,而不是在BLL中 - 例如設置一些實體的CreationDate(順便說一句, ?)
我看了一些入庫樣本,但找不到任何使用這種組合的東西。我想知道有沒有什麼好做的?它是否正確?其他優點和缺點是什麼?
在此先感謝
爲什麼你需要更新的方法?您是使用自定義構建數據訪問層還是依賴其中一個ORM? – 2011-01-27 14:00:59
是的,我使用NHibernate,但在其他項目中我也有更新方法,是不是錯誤? – sos00 2011-01-27 14:37:57