深入探究实体框架开发:从代码优先到数据库生成
1. 代码优先开发
代码优先开发是领域驱动设计(DDD)的直接应用,其应用流程由领域驱动,而非数据库。通常在数据库尚未设计或不是遗留数据库时采用这种方法,这样数据存储具有一定灵活性,能更好地对领域进行建模。
与活动记录(AR)模式不同,DDD 是领域驱动的,开发过程完全独立于持久化方面。理论上,只需更改数据访问层(DAL)的连接字符串,DDD 应用程序就可以持久化到不同类型的数据库。
实现 DDD 技术可能会使应用程序更复杂,并且需要在 DAL 中引入额外的组件来协调一个或多个领域实体的持久化,这些组件包括存储库(Repository)和工作单元(Unit of Work)。
2. 存储库模式
在使用领域模型时,通常只在领域实体中包含与实体关系和行为相关的业务逻辑,避免包含与持久化层相关的逻辑,因为领域应与数据存储无关。
因此,在 DDD 中,需要将逻辑分为两层:业务逻辑层包含特定于领域的逻辑,数据访问层包含特定于持久化过程的逻辑。Fowler 在其设计模式的书中提到,这种逻辑应包含在一个名为存储库的组件中。存储库充当领域实体和映射对象之间的中介,就像实体的内存集合一样。它还包含与数据库事务、对象关系映射(O/RM)调用以及所有其他数据层特定操作相关的代码,从而在 DAL 和应用程序的其他部分之间增加了一层抽象。
以下是存储库模式的示例代码:
CustomerRepository repository = new CustomerRepository();
IList&l