我想知道用EF制作dal层的效用。 为什么不直接在业务层调用EF,考虑到EF DBContext是unitOfWork和List DBSet是存储库? 那么为什么要添加一个额外的DAL层,这最终是一个门面.. 我看到的唯一优势是,我们必须改变数据访问实现,比如用Hibernate替换EF或其他。但说实话,我从未见过这种情况。
答案 0 :(得分:2)
实际上,对于数据映射器,开发DAL的必要性是没有用的,因为它将包含0行代码。
数据映射器之上的所有内容都不是数据访问层而是实际域,因为像OR / M这样的数据映射器实现会将您的对象转换为底层关系数据,反之亦然,你在他们身上工作就是发展自己的领域,错过对象关系阻抗的痛苦。
在数据映射器之上引入存储库模式的关键是因为您希望能够在长期内将基础数据存储切换到非关系数据存储(也是,从NoSQL切换到SQL,谁知道!),还有另一个明确的理由在软件中引入存储库层:因为你希望能够用假货模拟数据存储以便对你的域进行单元测试< / strong>即可。
最后,即使实体框架实现了工作单元和其他模式,有时它们的实现可能不适合您自己的域要求,您需要将它们包装起来,以便为您的域提供更多具体结果。