假设您有以下联系 DTO。Address/PhoneNumber/EmailAddress/WebSiteAddress 类也是简单的 DTO(只是数据没有行为)
public class Contact
{
public Address[] Addresses { get; set; }
public PhoneNumber[] PhoneNumbers { get; set; }
public EmailAddress[] EmailAddresses { get; set; }
public WebSiteAddress[] WebSiteAddresses { get; set; }
}
我应该如何对 DTO 建模以允许实现以下行为?
客户端可以提交一个请求,该请求将
- 添加一个电话号码,更新两个电话号码并删除两个添加两个
- 添加两个电子邮件地址,更新一个电子邮件地址并删除三个
添加三个网址,更新两个网址,删除两个。你明白了。
一种选择是为每个地址/电话号码/电子邮件地址/网站地址添加一个操作属性。
那么更新地址的代码如下所示:
var addressesToUpdate = serviceContact.Addresses.Where(x => x.AddressAction.ToUpper() == "UPDATE");
var addressesToAdd = serviceContact.Addresses.Where(x => x.AddressAction.ToUpper() == "ADD");
var addressesToDelete = serviceContact.Addresses.Where(x => x.AddressAction.ToUpper() == "DELETE").Select(x => x.AddressId);
对所有其他列表重复此操作可能会产生重复。
我的问题是:
我应该如何使用可更新列表对服务 DTO 建模,同时避免重复?