我可以使用带导航 属性 的 EF class 作为我的控件的数据源吗?

Can I use EF class with navigational property as a datasource for my control?

我有一个 Kendo DrowpDownList,我使用 EF class 作为它的数据源。

@(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");
                        });
                    })
                )

当 table MY_CARS 是唯一的 table.

时,这很好用
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

我认为导航属性现在给我带来了问题。

有没有办法仍然绑定到相同的 class 抑制导航 属性 或者我必须将我的 MY_CARS class 映射到另一个 class?

不太可能使用这种方式,因为这更多是关于 SmartUI 反模式和另一个对象,视图模型会更好地完成这项工作。字段的映射通常使用诸如 Automapper 之类的工具来完成。

可能以下内容会有所帮助,应用 AsNoTracking():

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