2016-08-16 1 views
0

データソースとしてEFクラスを使用した剣道DrowpDownListがあります。EFクラスをナビゲーションプロパティとともにコントロール用のデータソースとして使用できますか?

@(Html.Kendo().DropDownList() 
        .Name("myCars") 
        .OptionLabel("--- Select Cars ---") 
        .DataValueField("ID") 
        .DataTextField("DESCRIPTION") 
        .HtmlAttributes(new { style = "width: 500px" }) 
        .DataSource(s => 
        { 
         s.Read(r => 
         { 
          r.Action("GetAllCars", "Home"); 
         }); 
        }) 
       ) 

これは、テーブルMY_CARSが唯一のテーブルだった場合にうまく機能しました。

public static List<MY_CARS> GetAllCars() 
{ 
    using (var context = new Entities()) 
    { 
     return context.MY_CARS.ToList(); 
    } 
} 

私のモデルを変更したらすぐに、同じコードが機能しなくなりました。

私はにモデルを変更:私は、ナビゲーションプロパティは、今私に問題を引き起こしていると考えている

MY_CARS: 

ID NAME DESCRIPTION 



MY_USER 

ID NAME EMAIL 



MY_USER_CARS 

ID USER_ID CAR_ID 

*USER_ID has a FK to MY_USER.ID 

*CAR_ID has a FK to MY_CARS.ID 

同じクラスにバインドしてナビゲーションプロパティを抑制する方法はありますか、またはMY_CARSクラスを別のクラスにマップする必要がありますか?

+0

実際のエラーが答えるために役立つだろう... – Artyom

答えて

0

これは、SmartUIの反パターンや別のオブジェクトの詳細な使用方法ではないようですが、これを実現するにはビューモデルが適しています。フィールドのマッピングは、通常Automapperのようなツールを使用して行われます。

おそらく次はAsNoTracking()の適用、役立つだろう:

public static List<MY_CARS> GetAllCars() 
{ 
    using (var context = new Entities()) 
    { 
     return context.MY_CARS.AsNoTracking().ToList(); 
    } 
} 
+0

はありがとう、これは私がやってしまったものですが、私は場合は確認されませんでしたそれはそれを行う適切な方法でした(つまり、私は自分のためにもっと仕事をしています)。私はまだMVCを学んでいますが、(ドロップダウンの場合は)データを表示するだけですが、ビューモデルクラスを作成するという習慣に入るはずです。 – PrivateJoker

関連する問題