0

假设我有一组嵌套的业务对象:

public class Customer
{
    public int ID { get; set; }
    public string Name { get; set; }
    public Address Address { get; set; }
}

public class Address
{
    public int ID { get; set; }
    public string Street { get; set; }
    // ...
    public AddressType Type { get; set; }
}

public enum AddressType
{
    Billing,
    Mailing
}

现在假设我只想更新客户的姓名。我遇到的问题是我仍然必须为嵌套对象提供所有数据,即使我调用的服务方法忽略了它们。

问题是枚举、ID 和其他值不能为空。所以 EF 抱怨数据为空。

为了完成这项工作,我必须向我的对象添加虚拟数据(服务方法将再次忽略这些数据)。当我可能只需要数据的一个子集时,似乎没有必要来回发送一个完整的对象。

有没有更好的方法来处理 EF/WCF 的部分更新?

编辑:

假设 WCF 服务有方法:

public void UpdateCustomer (Customer customer)

我想传递一个Customer大部分是空的服务,只包含改变的值Name加上ID

4

1 回答 1

1

有几种不同的模式可用于 Delta 接口。示例:界面中的第二个参数。第二个参数可以是 MemberName 集合。该集合设置为调用者希望处理的所有成员的名称。

选项 2,为接口使用不同的模型作为实际的 EF 类。标记除键可选的所有字段。您可以发送仅包含相关字段的 XML。您需要检查哪些元素存在,哪些不存在,以区分
标签不存在。

因为应该/可能意味着重置为默认值,而缺少的标签可能意味着什么也不做。还有其他模式,这只是2个例子。

于 2012-12-26T21:47:56.103 回答