具有实体框架的实用DAL层

本文关键字:DAL 实体 框架 | 更新日期: 2023-09-27 18:11:09

我想知道用EF制作dal层的效用。为什么不在业务层直接调用EF,考虑到EF DBContext是一个工作单元,而List DBSet是存储库?那么为什么要添加一个额外的DAL层呢?我看到的唯一好处是,如果我们必须改变数据访问实现,比如用Hibernate或其他代替EF。但老实说,我从来没见过这种情况。

具有实体框架的实用DAL层

实际上,对于数据映射器,开发DAL的必要性显然是无用的,因为它将包含0行代码。

数据映射器之上的所有东西都不是数据访问层,而是实际的域,因为像OR/M这样的数据映射器实现将您的对象转换为底层关系数据,反之亦然,而您在它们之上工作是开发您的域,并错过了对象关系阻抗的痛苦。

在数据映射器之上引入存储库模式的意义在于,从长远来看,您希望能够将底层数据存储切换到非关系数据存储(也可以从NoSQL切换到SQL,谁知道呢!),并且在您的软件中引入存储库层还有另一个明确的原因:,因为您希望能够用fakes模拟数据存储,以便对域进行单元测试。

最后,即使当实体框架实现工作单元和其他模式时,有时它们的实现可能不适合您自己的领域需求,您需要包装它们以为您的领域提供更多的具体化。