WEB开发网
开发学院软件开发C语言 实体框架之领域驱动实践(三):案例:一个简易的... 阅读

实体框架之领域驱动实践(三):案例:一个简易的销售系统

 2010-09-30 22:37:42 来源:WEB开发网   
核心提示: 再次,EF对实体对象关系的支持主要有关联和继承.根据Multiplicity的设置,关联又可以支持到组合关联与聚合关联.我觉得EF中对继承关系的支持是一个亮点.继承表述了“什么是一种什么”的观点,比如在我们的案例中,“销售订单”和“退货

再次,EF对实体对象关系的支持主要有关联和继承.根据Multiplicity的设置,关联又可以支持到组合关联与聚合关联.我觉得EF中对继承关系的支持是一个亮点.继承表述了“什么是一种什么”的观点,比如在我们的案例中,“销售订单”和“退货单”都是一种“单据”.如果从传统的数据库驱动的设计方案,我们很自然地会使用“Orders”数据表中的整型字段“OrderType”来保存当前单据的类型(比如0表示销售订单,1表示退货单),那么,在获取系统中所有销售订单的时候,我们会使用下面的代码:

实体框架之领域驱动实践(三):案例:一个简易的销售系统

查看原图(大图)

从技术角度讲,上面的代码没什么问题,运行的也很好,能够获得系统中所有销售订单的列表.但是,[OrderType]=0这种写法并不包含任何领域语义,如果让另一个开发人员来跟进这段代码,他不得不先去查阅其它项目文档,以了解这个[OrderType]=0的具体涵义.在引入了继承关系的EF中,我们只需要下面的Linq to Entities,即可既方便、又明了地获得所有销售订单的列表了:

实体框架之领域驱动实践(三):案例:一个简易的销售系统

简单明了吧?EF带给我们的不仅仅是一个技术框架,也不仅仅是一个数据存取的解决方案.

值对象

EF支持值对象,这很好!在EF中可以定义Complex Types,而一个Complex Type下可以定义多个Primitive Type和多个Complex Type.与LINQ to SQL相比,这是一大进步.

实体框架之领域驱动实践(三):案例:一个简易的销售系统

对于值对象的两点问题我在第一篇文章中已经讲过了,在此就不重复了.

综上所述,EF基本上能够支持领域驱动设计的思想(即使有些方面不完善,但目前也可以找到替代的方案).我想,只要能够对领域驱动有清晰的认识,就能够很好地将实体框架应用于领域驱动的实践中.

上一页  1 2 3 

Tags:实体 框架 领域

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接