我们在进行程序开发的时候,容易走入的误区是”面向数据库建模”,也就是在设计实体类的时候,总是先考虑实体类在数据库中如何保存。
这样设计出的实体类和数据库表具有直接的对应关系,实体类中属性的个数与类型和数据库表中的列几乎完全一致。
这样设计出的类称不上”实体类”,只能被称为数据对象(data object)。
这样的数据对象反映的是数据库的细节,数据库表和真正的领域模型存在差异,当开发人员使用这样的”伪实体类”进行开发的时候,无法真正地实现面向领域模型的开发。
因此,本书的作者不推荐开发人员采用EF Core的”反向工程”来根据已有的数据库表生成所谓”实体类”的方式进行开发。
采用反向工程生成的实体类进行开发是”面向数据库开发”,而不是”模型驱动开发”。
数据库只是我们用来保存领域对象的一个介质而已。
我们在进行开发的时候,应该在不考虑数据库实现的情况下进行领域模型建模,然后使用Fluent API等对实体类和数据库做配置。
通俗来讲就是,在进行领域模型建模的时候,不考虑数据库,而是最后使用Fluent API来处理数据库实现的细节。