2016-05-04 17 views
0

初めて正しく動作するodata呼び出しがありますが、一致しないプロパティのために連続呼び出し中に失敗します。私のコントローラは、ドメインサービスを呼び出してEntity Frameworkデータベースにクエリを実行し、その結果をビューモデルとして返すだけで、ロジックはほとんどありません。しかし、ソートしようとすると、ビューモデルの階層がドメインモデルと一致しないため、エラーが発生します。Odata:ドメインモデルへのビューモデルのマッピング

ドメインモデル:

public class Parent 
{ 
    public object Child 
    { 
    public string Name 
    } 
} 

ビューモデル:

EFのクエリは私がオフに送信するためにモデルを表示するために変換することになる、両親のリストを返す上記の例を使用して
public class Parent 
{ 
    public string ChildName 
} 

クライアント。 ChildNameにソート要求が行われると、ParentにChildNameの概念がないため、odataが失敗します。 ChildNameをChild.Nameにマップする必要があります。私はEntitySetを使用して名前を変更する人の例を見てきましたが、私の場合はモデルをマップするものはありません。

答えて

0

EFを使用して、クエリ中にLINQ式を使用してドメインモデルをビューモデルに変換しました。 ParentViewにビューモデルを変更し、コンストラクタを追加例が、:

var query = from p in context.Parent select new ParentView(p.Child.Name) 

この正のは、それはので、私は不要なデータを運ぶいないよ、データベース上のすべての実行であるということです。また、odataがクエリに追加されるため、引き続きodataオプションをクエリに使用することができます。しかし、私は助けることができないが、これが最善の方法ではないと感じている。

関連する問題