2016-08-16 33 views
0

我有一個Kendo DrowpDownList,我使用EF類作爲數據源。我可以使用帶有導航屬性的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

相關問題