Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc MVC,实体框架,创建新项目时未显示外键数据_Asp.net Mvc - Fatal编程技术网

Asp.net mvc MVC,实体框架,创建新项目时未显示外键数据

Asp.net mvc MVC,实体框架,创建新项目时未显示外键数据,asp.net-mvc,Asp.net Mvc,使用MVC4和EF5代码优先。出现了一个问题,即当创建一个新的数据记录时,引用一个外键行。列出已创建的条目一切看起来都很好: @foreach (var item in Model) { @Html.DisplayFor(modelItem => item.Location.name) @Html.DisplayFor(modelItem => item.Action.name) ... 创建新记录引用无法显示外来内容(名称): 在控制器中正确填写外键(参见简化示

使用MVC4和EF5代码优先。出现了一个问题,即当创建一个新的数据记录时,引用一个外键行。列出已创建的条目一切看起来都很好:

@foreach (var item in Model) {
   @Html.DisplayFor(modelItem => item.Location.name)
   @Html.DisplayFor(modelItem => item.Action.name)
   ...
创建新记录引用无法显示外来内容(名称):

在控制器中正确填写外键(参见简化示例)


并且在数据库中正确创建了记录。仅名称不显示在视图上。我必须在创建过程中获取关联的reocrd myself吗?

我在代码中没有看到任何对
SaveChanges()
的调用。您需要调用它,以便外键属性加载导航属性。或者,就像你在问题末尾所说的那样,显式加载它们。

+1这就是我一直在做的,导航属性在你将实体插入到数据库后工作得很好,仅使用foreignkeyid,但我真的想知道是否有解决方法。你能显示Timerecord类和view Create吗?@sormii,这就是使用外键属性定义导航和集合属性时得到的结果。您可以保存实体,然后使用
Include
扩展方法快速加载相关实体。引用是否自己进行:tm.Location=dbLoc.Location.Find(tm.locationID);tm.Action=dbAct.Action.Find(tm.actionID);然后,您应该更新问题中的代码以表明这一点,因为它应该提供不同的EF行为和不同的结果。
    ...
    @Html.LabelFor(model => model.locationID)
    @Html.DisplayFor(model => model.Location.name)

    @Html.LabelFor(model => model.actionID)
    @Html.DisplayFor(model => model.Action.name)
    ...
    public ActionResult Create()
    {
        Timerecord tm = new Timerecord();

        tm.currentTime = DateTime.Now;
        tm.locationID = 1;
        tm.actionID = 5;

        ViewData.Model = tm;
        return View();
    }