【发布时间】:2011-01-27 12:38:50
【问题描述】:
我正在更改企业会计应用程序的架构。我将使用 IRepositoy
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(顺便说一句,这样做是否正确?)
我看到了一些 IRepository 示例,但找不到使用这种组合的任何东西。我想知道这样做有什么好处吗?完全正确吗?还有什么优缺点?
提前致谢
【问题讨论】:
-
为什么需要更新方法?您是使用自定义构建数据访问层还是依赖其中一个 ORM?
-
是的,我正在使用NHibernate,但是在其他项目中我也有更新方法,是不是错了?
标签: design-patterns domain-driven-design irepository