实体框架之领域驱动实践(三):案例:一个简易的销售系统
2010-09-30 22:37:42 来源:WEB开发网核心提示:从现在开始,我们将以一个简易的销售系统为例,探讨Entity Framework(实体框架,简称EF)在领域驱动设计上的应用.为了方便讨论,我们的销售系统非常简单,不会涉及客户存在多个收货地址的情况,也不会包含任何库存管理的内容.假设我们的系统只需要维护产品类型、产品以及客户信息,并能够帮客户下订单、跟踪订单状态,以及
从现在开始,我们将以一个简易的销售系统为例,探讨Entity Framework(实体框架,简称EF)在领域驱动设计上的应用.为了方便讨论,我们的销售系统非常简单,不会涉及客户存在多个收货地址的情况,也不会包含任何库存管理的内容.假设我们的系统只需要维护产品类型、产品以及客户信息,并能够帮客户下订单、跟踪订单状态,以及接受客户退货.从简单的分析我们大致可以了解到,这个系统将会有如下实体:客户、单据、产品及其类型.单据分为销售订单和退货单两种,每个单据可以有多个单据行(比如销售订单行和退货单行).不仅如此,系统允许每个客户有多张信用卡,以便在结账的时候,选择一张信用卡进行支付.在使用EF的Entity Data Model Designer进行设计后,我们得到下面的模型:
查看原图(大图)
上面的模型表述了领域模型中各个实体及其之间的关系.我们先不去讨论整个系统的业务会是什么样的,我们先看看EF是如何支持实体和值对象概念的.
实体
首先看看实体这个概念.在领域驱动设计的理论中,实体是模型中需要区分个体的对象,也就是说,针对某种类型,我们既要知道它是什么,还需要知道它是哪个.我在前面的博文中有介绍过实体这个概念.实体都有一个标识符,以便跟同类型的其它实体进行区分.EF Entity Data Model Designer上能够画出的都是实体,你可以看到每个实体都有个Id成员,其Entity Key属性被设置为True,同时被分配了一种标识符的生成方式,如下图所示:
赞助商链接