델타 <T>은 단일 객체가 아닌 복잡한 객체 그래프와 함께 사용할 수 있습니까? 내가 성공하지 않고 그것을 사용하려고 노력하고 뭔가를 놓치고 있는지 또는 기능이 단순히 지원되지 않는지 궁금해하고있다. 예를 들어델타 <T>을 복잡한 객체와 함께 사용
, 여기 모델입니다 :
public class Person {
public int Id { get;set; }
public string Name { get;s set; }
public Address Address { get; set; }
}
public class Address {
public string Street { get; set; }
public string City { get; set; }
public string PostCode { get; set; }
}
그리고 여기 하나로, OData 모델 건물의 내 컨트롤러의 POST 방법에 대한
var builder = new ODataConventionModelBuilder();
builder.ComplexType<Address>();
builder.EntitySet<Person>("Person");
, 나는이 JSON을 사용할 수 있으며 직렬화 복원됩니다 고급 :
{
"Name": "Mr Smith",
"Address": {
"Street": "Some Street",
"City": "Some City",
"PostCode": "Some PostCode"
}
}
그러나 패치를 사용할 때 문제가 발생합니다. 나는이를 보낼 경우 :
{
"Name": "Mr Doe",
"Address": {
"Street": "Another Street"
}
}
그리고 내 컨트롤러 메소드 서명은 다음과 같습니다
public IHttpActionResult Patch([FromODataUri] key, Delta<Person> delta) { ... }
그리고 거리에 대한 도시에 대한 널 (null) 및 우편 번호와 "또 다른 거리"과 주소 속성을 포함 델타, . 이것은 나에게 맞는 것 같다.
다음으로 사람 개체에 변경 사항을 적용하기 위해 delta.Patch (person)를 사용하면 주소의 Street 속성을 업데이트하는 대신이 주소를 도매인에게 도매로 복사합니다.
델타가 지원하지 않는 복잡한 유형의 속성이 누락되었거나 패치 되었습니까? <T>?
문제 상태에 따르면 지금 수정 된 것 같습니다. – HappyNomad