我正在尝试提出何时使用数据传输对象以及何时使用DataTables的方法.
作为我在我们的系统中面临的问题的一个例子......
我们有6个不同的业务实体程序集代表相同的东西但具有不同的属性.它们是由几个开发人员在几年内就不同问题创建的.
例如,多年来使用"自行车"级的不同应用涉及自行车的不同特性.因此,他们调用了不同的数据方法,这些方法只检索并填充了他们所关注的属性.
数据服务1填充
牌
颜色
数据服务2填充
齿轮
轮胎尺寸
每个都使用不同的业务实体.显然这很荒谬,你无法为每种可能的属性组合创建一个新类.
我的直觉告诉我,如果这是一个问题,那么我们应该使用ORM.
但暂时我想说.
如果要从表中填充或返回整行,请使用与数据库匹配的DTO/Business实体.
如果要返回一组随机属性,则使用数据表.
有人可以提供一些指导吗?
谢谢
我会保持简单并始终返回一个DataSet - 简而言之,使用DataSet作为通用DTO.它是灵活的,它是类型安全的,它是可用的.除非你进入一些非常毛茸茸的嵌套对象模型,否则DTO不会为你付出任何代价.
这将根据我们所讨论的系统的大小而有所不同.如果这些是真正独立的系统,那么它们可以使用不同的方式来查看相同的概念.这称为有界上下文:http://dddcommunity.org/discussion/messageboardarchive/BoundedContext.html
如果是这种情况,您可能遇到的问题是您通过数据库在不同的有界上下文之间进行通信,而不是通常在API级别的显式边界.
另请注意,管理或返回信息子集并不一定意味着使用单独的类.您可以让共享类实现不同的接口,因此调用代码能够处理信息的子集.