다음 연락처 DTO가 있다고 가정 해보십시오. 주소/PHONENUMBER/EmailAddress를/WebSiteAddress 클래스뿐만 아니라 (단지 데이터없는 행동) 간단한 DTO들입니다서비스에서 사용하는 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를 모델링하는 방법을
?
클라이언트는,
- 이 전화 번호를 추가하는 요청을 제출 두 개의 전화 번호를 업데이트하고 두 개의
- 두 개의 이메일 주소를 추가 추가, 삭제 한 이메일 주소를 업데이트 및 삭제할 수있는 세 가지
세 웹 사이트 주소를 추가하고 두 개의 웹 사이트 주소를 업데이트하고 두 개를 삭제하십시오. 당신은 아이디어를 얻습니다.
하나의 옵션은 각 Address/PhoneNumber/EmailAddress/WebSiteAddress에 작업 속성을 추가하는 것입니다.
그런 다음 코드 업데이트 주소는 다음과 같습니다 :
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를 모델링해야합니까?
고마워요. 체크 아웃 할 수있는 코드 예제가 있습니까? – Alper
샘플이 없지만 Etag가 변경되면 내 OnPost에서 다음과 같이 사용합니다.'return new HttpResult { StatusCode = HttpStatusCode.PreconditionFailed이 상태 설명이 =}, 을 "전제 조건 실패";'내가 조건 잡기 위해 클라이언트 측에서이를 사용 : '캐치 (WebServiceException 전자) { 경우을 (e.StatusCode == (int)를 HttpStatusCode.PreconditionFailed) ...}' –
그게 유용합니다. 감사. – Alper