是否应为同一实体创建多个数据合同

时间:2019-05-20 07:32:01

标签: c# wcf

根据设计,为同一实体创建多个数据合约是个好主意吗?

例如,我有一个名为[Person]的表,开始时只有两个字段:ID和Name。我使用nHibernate映射该实体并将其标记为数据协定,以将原始实体公开给客户端。

随着进一步的发展,表格中增加了越来越多的列:身高,性别,地址...等等等等

当客户端尝试检索Person对象时,也会交付具有很多无用属性的大对象。

我是否为提供dto精简对象的某些方法创建另一个类[PersonWithNameOnly]或诸如[PersonLite]这样的设计好吗?我担心它会创建大量数据合同。

1 个答案:

答案 0 :(得分:1)

,一个好的做法是公开仅包含客户端要求的ViewModel。
原理是仅处理当前层需要处理的数据,例如micro services architecture

但是,由于为每个端点开发新的ViewModel可能很耗时,因此您会看到一些项目,在该项目上,ViewModel可以用于多个端点,其中包含许多属性。但是显然,这不是最佳实践。

这就是为什么人们尝试提供针对此问题的解决方案的原因,例如GraphQL,该解决方案只能提供客户需要获取的字段。

希望它更清晰一些。