Entity framework 从单个MVC视图编辑两个对象

Entity framework 从单个MVC视图编辑两个对象,entity-framework,razor,model-view-controller,asp.net-mvc-5,Entity Framework,Razor,Model View Controller,Asp.net Mvc 5,我有一个地址表和一个司机表。每个驱动程序在地址表中都有一个带有DriverId的地址。我已经创建了一个viewModel,其中插入了两个表中的数据,并且只返回了一个包含Edit、details和Delete的驱动程序详细信息的视图 当我单击Edit时,我希望能够创建一个视图,该视图将连接两个表并显示记录,包括驱动程序详细信息和地址详细信息,以启用编辑 这是我的司机模型 public class DriverViewModel { public tb_DriverDetails Drive

我有一个地址表和一个司机表。每个驱动程序在地址表中都有一个带有DriverId的地址。我已经创建了一个viewModel,其中插入了两个表中的数据,并且只返回了一个包含Edit、details和Delete的驱动程序详细信息的视图

当我单击Edit时,我希望能够创建一个视图,该视图将连接两个表并显示记录,包括驱动程序详细信息和地址详细信息,以启用编辑

这是我的司机模型

public class DriverViewModel
{
    public tb_DriverDetails Driver { get; set; }
    public tb_Addresses Addresses { get; set; }
}
这是我在DriverViewmodelControl中的编辑方法

[HttpGet]
public PartialViewResult Edit(int? id)
{
    tb_DriverDetails newDriver = db.tb_DriverDetails.Find(id);

    return PartialView(newDriver);
}
正如您所看到的,这只适用于驱动程序,因为我还在cshtml文件中使用了驱动程序详细信息,如下所示:

@model MyGroupProject.tb_DriverDetails

@{
    ViewBag.Title = "Edit";
}

我的问题是,当单击将所选记录的“驱动程序”视图和“编辑”命令合并到一个要编辑的单一视图中时,我是否可以从“驱动程序”视图和“编辑”命令中选择“驱动程序”和“地址”表?

您好,下面是我在“编辑”操作下输入的代码

 public PartialViewResult Edit(int? id)
        {

            DriverViewModel driverView = new DriverViewModel();
            driverView.Driver = (from b in db.tb_DriverDetails
                where
                    b.DriverID == id
                select b).SingleOrDefault();
            driverView.Addresses = (from b in db.tb_Addresses 
                                    where b.DriverID == id select b).SingleOrDefault();

            return PartialView(driverView);
        }
然后在Edit.cshtml中,我包括了我的@model,如下所示

@model MyGroupProject.Models.ViewModel.DriverViewModel

@{
    ViewBag.Title = "Edit";
}

<div class="form-group">
            @Html.LabelFor(model => model.Driver.FirstName, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.Driver.FirstName, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.Driver.FirstName, "", new { @class = "text-danger" })
            </div>
        </div>
  <div class="form-group">
            @Html.LabelFor(model => model.Addresses.City, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                <div class="checkbox">
                    @Html.EditorFor(model => model.Addresses.City)
                    @Html.ValidationMessageFor(model => model.Addresses.City, "", new { @class = "text-danger" })
                </div>
            </div>
        </div>
@model MyGroupProject.Models.ViewModel.DriverViewModel
@{
ViewBag.Title=“编辑”;
}
@LabelFor(model=>model.Driver.FirstName,htmlAttributes:new{@class=“controllabel col-md-2”})
@EditorFor(model=>model.Driver.FirstName,new{htmlAttributes=new{@class=“form control”}})
@Html.ValidationMessageFor(model=>model.Driver.FirstName,“,new{@class=“text danger”})
@LabelFor(model=>model.Addresses.City,htmlAttributes:new{@class=“controllabel col-md-2”})
@EditorFor(model=>model.Addresses.City)
@Html.ValidationMessageFor(model=>model.Addresses.City,“,new{@class=“text danger”})

这对我很有用,感谢您的帮助

这是第一个实体框架代码还是使用现有数据库中的EDMX?您使用的是Fluent API吗?pWdst yes EDMX来自现有数据库。。请原谅我的无知,我不知道什么是fluentapi,只是g…..引导了它