企業会計アプリケーションのアーキテクチャを変更しています。IRepositoy<TDataModel> パターンを使用しますが、少し違いがあります。ベース IRepository<TDataModel> から派生するすべてのエンティティのインターフェイスを作成します。たとえば、私のエンティティがクライアント、製品、および注文である場合、私は
IClientRepository : IRepository<ClientModel>
IProductRepository : IRepository<ProductModel>
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>
{
}
このアプローチを使用する理由は、いくつかのドメイン モデルの属性を BLL ではなく DAL に設定したいからです。
IRepository<> のサンプルをいくつか見ましたが、この組み合わせを使用するものは見つかりませんでした。私は知りたいのですが、これを行うには何か良いことがありますか? それはまったく正しいですか?他の長所と短所は何ですか?
前もって感謝します