次の注釈付きモデルがあります
public class TypeA
{
public int TypeAId { get; set; }
[Required]
public TypeB B { get; set; }
public string AValue { get; set; }
}
public class TypeB
{
public int TypeBId { get; set; }
public string BValue { get; set; }
}
エンティティ フレームワークを使用して、WCF データ サービスによって v3 odata として公開されます。次のような DataServiceContext を使用して TypeA を更新しようとすると、
var ctx = new Service.Context(new Uri("http://localhost/TestUpdateService/TestUpdateService.svc"));
var t = ctx.theATypes.Expand(p => p.B).First();
t.AValue = "New value";
ctx.UpdateObject(t);
ctx.SaveChanges();
サービスで「B フィールドが必要です」という DbEntityValidationException が発生します。
リクエストの本文「MERGE /TestUpdateService/TestUpdateService.svc/theATypes(1) HTTP/1.1」には、AValue プロパティの変更が含まれていますが、プロパティ B へのリンク情報は含まれていません (これは、検証が行われる理由についての私の推測です)。サービスに失敗します)。データ サービスの更新について何か不足していますか?