2017-12-10 5 views
0

私はEntity Framework 6とODataを使用しています。モデルAには、モデルBのような他のモデルにいくつかのnavプロパティがあります。Getについては、Aを呼び出し、Bに展開できるようにしたいと思います。面倒なことは、パッチの呼び出しが可能で、本体の内部にAのすべてのデータとBのネストされたデータを含めることです。エンティティをナビゲーションプロパティ(Get)として設定する方法と複雑なオブジェクトを渡す方法(Patch、Put)

私はEFがバーチャルでデータを受け入れないことを知っていますが、だから私は私のアプリケーションで私たちのデータを引き出し、EFで保存する前にこれらのフィールドを手動で無効にすることができると考えました。それは素晴らしいだろう。

しかし、私はODataのが私のサブオブジェクトを受け入れるために得ることができる唯一の方法は、プロパティBのタイプがモデルビルダーに次の行を追加することで、複雑なオブジェクトであることを指定することである...

builder.ComplexType<B>(); 

この型のネストされたデータをPatchに渡すことはできますが、複雑な型やナビゲーション型のみに拡張することはできないので、Getは機能しません。

したがって、どちらか一方の方法でしか動作しません。どのように私は両方の状況のた​​めにこれのような何かを同時に達成することができます上の任意のアイデア?

ありがとうございます!

答えて

0

$refを使用してエンティティ間のリンクを設定できます。例えば

  1. POST ~/As応答から、あなたが場所IDを取得することができ、Asに新しいAを作成します。だから、あなたは応答から、Bsに新しいBを作成するための新しいA

  2. POST ~/Bsのキーを取得することができ、あなたは場所IDを取得することができます。だから、あなたは新しいBのid(uri)を得ることができます。

  3. 次に、新しいAと新しいBの間のリンクを作成するのに$refを使用できます。 $ refについては、サンプルコードhereを参照できます。

関連する問題