C# 更新方法发送完整对象或仅发送更新

C# 更新方法发送完整对象或仅发送更新,c#,web-services,wcf,model-view-controller,crud,C#,Web Services,Wcf,Model View Controller,Crud,我正在开发一个WCF服务,实现基本的CRUD操作 在实现更新方法时,该方法应该接收对象的实例还是只接收更新 就这个问题而言,假设我有具有各种属性的PERSON类型;(我的对象更复杂,具有更多不同类型的属性) 还有一些更复杂的属性: Father (of type PERSON) Children (of type LIST<Person>). 父亲(个人类型) 子项(类型列表)。 然后我: 1) 调用GETPERSON方法。(鲍勃) 2) 更新Bob的年龄和他父亲的姓名

我正在开发一个WCF服务,实现基本的CRUD操作

在实现更新方法时,该方法应该接收对象的实例还是只接收更新

就这个问题而言,假设我有具有各种属性的PERSON类型;(我的对象更复杂,具有更多不同类型的属性)

还有一些更复杂的属性:

Father (of type PERSON)   
Children (of type LIST<Person>).  
父亲(个人类型)
子项(类型列表)。
然后我:

1) 调用GETPERSON方法。(鲍勃)
2) 更新Bob的年龄和他父亲的姓名。
3) 调用update方法

  • 我应该发送Bob PERSON对象吗

  • 或者仅仅是我对Bob所做的更新,例如,可能使用新类型的集合(例如,使用属性的名称和它的新值)


谢谢

我的建议是,您应该让持久性层处理这个逻辑(更新的属性是什么),并让客户端进行相关的修改。客户端应该只知道检索到的对象,修改属性,然后将该对象发送到持久性逻辑

看起来您正在编写一种自己的ORM,为什么不使用现有的ORM?@Habib不,这是一种服务。类似于示例中使用的WCFDTO对象,它是一个非常简单的对象。但是如果不是像这样的简单类型,而是一个非常大和复杂的对象,并且我只更改了一个属性,我应该怎么做呢?我的观点是使用现有的ORM,例如,如果使用实体框架,您将能够加载一个完整的对象,或者只修改现有的属性。在这种情况下,您不必为表映射编写自己的类,而且CRUD操作也可以通过EF获得。有关如何仅从db更新特定字段或完整对象的信息,请参见。
Father (of type PERSON)   
Children (of type LIST<Person>).