2016-04-09 18 views
0

問題がフィールドAddressがエンティティセットTestEntity$expand句のないo-data getコールで返されない問題です。コードでは有効なAddressオブジェクトを割り当てています。関連するエンティティをodata応答でシリアライズ

は、我々はすでに

public class TestEntity 
{ 
    [Key] 
    public long Id { get; set; } 
    public string A { get; set; } 
    public Address Address { get; set; } 
} 

public class Address 
{ 
    [Key] 
    public long Id { get; set; } 
    public string Val { get; set; } 
} 

以降では、我々は実体としてもアドレスを公開することを決定したウェブ-APIを介して公開O-データの実体を持っていた、と我々はAddress、どこのクライアントのための鍵とコントローラを追加しましたアドレスを作成して他のエンティティと関連付けることができます。しかし、Addressが変更されたため、TestEntityクラスの一部として返されなくなりました。 Addressはデフォルトでは返されないナビゲーションプロパティになっていますので、クライアントは$expand節を送信する必要があります。しかし、私たちは既存のクライアントを壊すことは望まないので、クライアントに$expand節を送っていなくてもそれを返す必要があります。これを達成する方法は?

答えて

0

AddressプロパティにAutoExpand属性で注釈を付けることができる場合よりも、Microsoft.AspNet.ODataバージョン5.7以降を使用している場合。

+0

残念ながら古いバージョン5.3ですが、バージョンを変更できません。 – user2845026

+0

次に、EntitiesControllerの 'Get'メソッドの中でAddressオブジェクトを手動で取得するコードを追加する必要があります。 – lencharest

+0

私のクラスでは、 'Address'を読み、TestEntityに記入するコードを追加しましたが、問題はWeb APIがその値をシリアル化していないことです。ワイヤ上では、 'Address'の値がシリアル化されていないことがわかります – user2845026

関連する問題