Я меняю архитектуру корпоративного бухгалтерского приложения.Я собираюсь использовать шаблон IRepositoy , но с небольшой разницей.Я собираюсь сделать интерфейс для каждой сущности, которая является производной от базового IRepository .например, если бы мои объекты были Client, Product и Order, то у меня было бы
IClientRepository: IRepository IProductRepository: IRepository IOrderRepository: IRepository
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 некоторых объектов (кстатиdo?)
Я видел несколько примеров IRepository <>, но не смог найти ничего, что использовало бы эту комбинацию.Я хочу знать, есть ли что-нибудь хорошее, чтобы сделать это?это правильно на всех?какие еще плюсы и минусы?
заранее спасибо