System.Web.Http.OData.Deltaを使用して ASP.NET Web API サービスにPATCHメソッドを実装しようとしていますが、タイプ のプロパティに変更を適用できないようIEnumerable<T>
です。Delta の最新の Git リビジョン (2012.2-rc-76-g8a73abe) を使用しています。誰もこれを機能させることができましたか?
Web API サービスへの PATCH 要求で更新できるはずのこのデータ型を検討してください。
public class Person
{
HashSet<int> _friends = new HashSet<int>();
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public IEnumerable<int> Friends
{
get { return _friends; }
set
{
_friends = value != null ? new HashSet<int>(value) : new HashSet<int>();
}
}
public Person(int id, string firstName, string lastName)
{
Id = id;
FirstName = firstName;
LastName = lastName;
}
public Person()
{
}
}
この Web API メソッドは、以下を介して Person のパッチ適用を実装しますDelta<Person>
。
public void Patch(int id, Delta<Person> delta)
{
var person = _persons.Single(p => p.Id == id);
delta.Patch(person);
}
次の JSON を含む PATCH 要求をサービスに送信すると、個人のFriends
プロパティが更新されるはずですが、残念ながら更新されません。
{"Friends": [1]}
問題の要点は、Friends
このデータでデルタを更新する方法です。CodePlex での議論も参照してください。