【发布时间】:2010-10-28 03:27:00
【问题描述】:
我正在查看 differences between POCO and DTO(看来 POCO 是 dto 的行为(方法?))并遇到了 Martin Fowler 在贫血域模型上的 this article。
由于缺乏理解,我想我已经创建了这些贫血领域模型之一。
在我的一个应用程序中,我在“dto”dll 中定义了我的业务域实体。它们有很多与 getter 和 setter 相关的属性,其他的不多。我的业务逻辑代码(填充、计算)在另一个“bll”dll 中,而我的数据访问代码在一个“dal”dll 中。 “最佳实践”我想。
所以通常我会像这样创建一个 dto:
dto.BusinessObject bo = new dto.BusinessObject(...)
并像这样将其传递给 bll 层:
bll.BusinessObject.Populate(bo);
依次执行一些逻辑并将其传递给 dal 层,如下所示:
dal.BusinessObject.Populate(bo);
据我了解,要使我的 dto 成为 POCO,我需要将业务逻辑和行为(方法)作为对象的一部分。所以不是上面的代码,它更像是:
poco.BusinessObject bo = new poco.BusinessObject(...)
bo.Populate();
即。我是在对象上调用方法,而不是将对象传递给方法。
我的问题是 - 我怎样才能做到这一点,并且仍然保留关注点的“最佳实践”分层(单独的 dll 等......)。在对象上调用方法不是说必须在对象中定义方法吗?
请帮我解惑。
【问题讨论】:
标签: dll poco data-access-layer dto bll