Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否应为同一实体创建多个数据协定_C#_Wcf - Fatal编程技术网

C# 是否应为同一实体创建多个数据协定

C# 是否应为同一实体创建多个数据协定,c#,wcf,C#,Wcf,根据设计,为同一个实体创建多个数据契约是一个好主意吗 例如,我有一个名为[Person]的表,开始时只有两个字段:ID和Name。我使用nHibernate映射实体并将其标记为数据契约,以向客户机公开原始实体 随着进一步的发展,表格中增加了越来越多的栏目:身高、性别、地址。。。废话废话 当客户端试图检索Person对象时,也会传递一个包含大量无用属性的大型对象 我为某些方法创建了另一个类[PersonWithNameOnly]或[PersonLite],以提供该dto的lite对象,这是一个好的

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

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

随着进一步的发展,表格中增加了越来越多的栏目:身高、性别、地址。。。废话废话

当客户端试图检索Person对象时,也会传递一个包含大量无用属性的大型对象


我为某些方法创建了另一个类[PersonWithNameOnly]或[PersonLite],以提供该dto的lite对象,这是一个好的设计吗?我担心它会产生大量的数据契约。

是的,公开仅包含客户端所需内容的ViewModel是一种很好的做法
原则是只处理当前层需要处理的数据,例如

但是,由于为每个端点开发新的ViewModel可能非常耗时,因此您将看到一些项目,其中ViewModel可用于多个端点,其中包含许多属性。但显然,这不是最佳做法

这就是为什么人们试图为这个问题提供解决方案,例如,它只能提供客户需要获得的字段


希望它更清楚一点。

是的,公开仅包含客户端所需内容的ViewModel是一种很好的做法
原则是只处理当前层需要处理的数据,例如

但是,由于为每个端点开发新的ViewModel可能非常耗时,因此您将看到一些项目,其中ViewModel可用于多个端点,其中包含许多属性。但显然,这不是最佳做法

这就是为什么人们试图为这个问题提供解决方案,例如,它只能提供客户需要获得的字段

希望能更清楚一点