在何处放置DTO<==&燃气轮机;WCF服务中的实体转换器?
我的设计如下: 我将在我的服务层中有一个名为“ProductDTO”的类(左边的服务) 调用“更新产品(ProductDTO)”操作合同时,应调用业务逻辑层中的“更新产品”功能 在数据库(数据访问层)中有一个名为“Product”的实体,因为我使用LINQ To实体,所以在那里也有一个名为“Product”的类 我的问题是——我在哪里把“ProductDTO”翻译成“Product” 我是否应该在服务层中具有“将产品转换为产品”功能? 这似乎是最符合逻辑的答案,因为这是唯一一个知道“ProductDTO”是什么的层 但这意味着服务层还必须知道什么是“产品”,因此必须引用数据访问层程序集 这是正确的吗在何处放置DTO<==&燃气轮机;WCF服务中的实体转换器?,wcf,domain-driven-design,dto,translate,Wcf,Domain Driven Design,Dto,Translate,我的设计如下: 我将在我的服务层中有一个名为“ProductDTO”的类(左边的服务) 调用“更新产品(ProductDTO)”操作合同时,应调用业务逻辑层中的“更新产品”功能 在数据库(数据访问层)中有一个名为“Product”的实体,因为我使用LINQ To实体,所以在那里也有一个名为“Product”的类 我的问题是——我在哪里把“ProductDTO”翻译成“Product” 我是否应该在服务层中具有“将产品转换为产品”功能? 这似乎是最符合逻辑的答案,因为这是唯一一个知道“Produ
我认为服务层应该只引用业务逻辑层,而业务逻辑层应该只引用数据访问层,而且服务层应该对DAL一无所知。看起来您的困惑可能源于假设数据层中的
Product
类实际上是Product
实体。通常,您的业务实体位于/是业务逻辑层。通常,这些类对持久性“一无所知”,持久性是数据访问层的责任(通常使用对象关系映射器框架)
实际上,您的服务需要引用域模型(业务层)和数据访问层来执行有用的工作。WCF服务代码和数据访问层都应依赖于域模型,但域模型不应依赖于数据访问层或WCF服务代码。将DTO映射到服务层中的域实体。您的服务层需要了解DTO及其映射到(和来自)的实体。我强烈建议您使用类似于映射的工具,而不是手工制作。 服务层不应引用DA层(或程序集)。稍后,BL将需要引用DA层来持久化实体。 编辑:
您的业务实体可能不应位于DA命名空间下。如果您使用ORM工具生成它们,请确保将任何DDD逻辑放在分部类的另一半中。几个问题:a.什么是“DDD”?B.我将使用LINQ-TO-EF。这是我的名字吗?还是这是我生命的一部分?C.如果我使用“LINQ-TO-EF”-DAL中还应该有什么?因为据我所知,所有实际的CRUD操作都将在BL中完成。那么DAL中有什么内容呢?