我正在更改企业会计应用程序的体系结构。我打算使用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