【发布时间】:2015-11-28 22:04:31
【问题描述】:
我想知道用 EF 制作 dal 层的实用性。 为什么不直接在业务层调用 EF,考虑到 EF DBContext 是一个 unitOfWork 而 List DBSet 是存储库? 那么为什么要添加一个额外的 DAL 层,这最终是一个门面.. 我看到的唯一优势是,如果我们必须更改数据访问实现,例如用 Hibernate 或其他替换 EF。但老实说,我从未见过这种情况发生。
【问题讨论】:
-
“直接在业务层调用 EF”——具体在哪里?在业务对象本身?作为运行业务用例的服务/事务脚本的一部分?在位于业务层的单独的类似存储库的对象中?
-
@guillaume31,不是业务对象本身,而是来自服务。例如: public OrderService(IOrderRepository repo) { this.repo = repo } public void Save(OrderDTO order) { var OrderEntity = ConvertDTOToEntity(order); if(OrderEntity.CheckBusinessRules()) repo.Save(OrderEntity) }
标签: c# architecture entity-framework-6 repository-pattern data-access-layer