简介
EO(Entity Object,实体对象)就是EF中的实体类,对EO的操作会对数据库产生影响。EO不应该传递到其他层。
DTO(Data Transfer Object,数据传输对象),用于在各个层之间传递数据的普通类。
DTO有哪些属性取决于其他层要什么数据。DTO一般是“扁平类”,也就是没有关联属性,都是普通类型属性。
一些复杂项目中,数据访问层(DAL)和业务逻辑层(BLL)直接传递用一个DTO类,UI层和BLL层之间用一个新的DTO类。简单的项目共用同一个DTO。DTO类似于三层架构中的Model。
ViewModel(视图模型),用来组合来自其他层的数据显示到UI层。简单的数据可能可以直接把DTO交给界面显示,一些复杂的数据可以要从新转换为ViewModel对象。
和三层架构对比:
EO相当于DataTable,不能传输到DAL之外。
DTO就是三层Model,在各个层中间传输数据用的。
多层架构:
搭建一个ASP.Net 三层架构项目:DAL、BLL、DTO、UI(asp.net mvc)。
UI、DAL、BLL都引用DTO;BLL引用DAL;EF中的所有代码都定义到DAL中,BLL中只访问DTO、BLL中不要引用DAL中的EF相关的类、不要在BLL中执行Include等操作、所有数据的准备工作都在DAL中完成。
注意:.Net中配置文件都是加载UI项目(ASP.net MVC)的,而不是加载DAL中的配置文件,因此EF的配置、连接字符串应该挪到UI项目中。
BLL层在小项目中的作用不大,比如我们的机房,只是返回DAL层,可有可无。但是在相对复杂的项目中,比如淘宝、京东,BLL层有很大的作用。