私は、ODATA v3を使用してさまざまなクライアントに在庫情報などを提供するWebAPIバックエンドを用意しています(使用するコンポーネントではv4を使用できません)。在庫データベースは非常に大きく(100K +レコード)、ODATAはサーバー側のフィルタリング、ページネーションなどに最適で、データ転送をリーンに保ちます。ODATAでNotMappedプロパティをシリアライズする方法
インベントリレコードには、マッピングされていないものの、計算されてクエリが作成されたときにその場に移入されるいくつかのプロパティがあります。例:
問題は、ODATAがNotMappedプロパティを無視するため、クライアントには返されないということです。
私はこれまでに尋ねられたことは知っていますが、それは少し前です。これは今サポートされているか、誰かが単純な回避策を持っていることを期待していました DB)。
(RebateAmountはまだODATAでは含まれません)私はこの醜い回避策を試してみましたが、それはうまくいきませんでした:
private decimal _rebateAmount;
public decimal RebateAmount { get {return _rebateAmount; } }
public void SetRebateAmount(decimal amount)
{
_rebateAmount = amount;
}
は非DBのプロパティを含むように(好ましくは簡単な)方法はありますODATA結果セット?これは私のシナリオで有用であるためには、編集2017年1月7日
は、ODATAもそうでない場合は、自動生成された(クライアント側)プロキシクラスは含まれません、メタデータで計算フィールドを含む必要がありますそれら。
私はあなたの提案を実装し始めましたが、かなり複雑なものが追加されていました(私はこれ以上快適です)。これを達成するための侵略的な方法がなければ、私は弾丸を噛んでDBにプロパティを入れます。しかし、あなたの提案に感謝! – Lars335
私はODATA 3(私は質問を更新しました)を使用していることを忘れていましたので、これはあなたの提案を実装しようとしたときに少なくとも私が持っていた問題を説明しています。いずれにせよ、私は可能な解決策を提案する時間を取ってあなたをupvotedしています。 – Lars335
これまで、このようなケースを実装しなければなりませんでしたが、残念ながら、これに対する簡単な解決策が見つからず、カスタムEdmModelを使用するためにOdataQueryOptionsを使用してカスタムIQueryableを作成しました。私はこの問題について、より良い解決策に関する最新情報を求めます。 – Ankit