Entity framework 如何在mvc 3.0 EF 5中连接两个模型并在视图中显示它们
我有两个表,它们有主键和外键概念。我想代表这些键获取组合数据。我不知道如何将这两个表绑定到单个模型中,并将其显示到视图中 型号Entity framework 如何在mvc 3.0 EF 5中连接两个模型并在视图中显示它们,entity-framework,asp.net-mvc-3,model-view-controller,Entity Framework,Asp.net Mvc 3,Model View Controller,我有两个表,它们有主键和外键概念。我想代表这些键获取组合数据。我不知道如何将这两个表绑定到单个模型中,并将其显示到视图中 型号 public class TVSerialModel { public Int32 Serial_ID { get; set; } // primary key public string Serial_Name { get; set; } public int? Release_Year { get; set;
public class TVSerialModel
{
public Int32 Serial_ID { get; set; } // primary key
public string Serial_Name { get; set; }
public int? Release_Year { get; set; }
}
public class TVSerialEpisodeModel
{
public Int64 Video_ID { get; set; }
public Int32 Serial_ID { get; set; }// foriegn key
public string Episode_Name { get; set; }
public string Description { get; set; }
public DateTime Uploaded_Time { get; set; }
}
public class TVSerial_Episode_VM
{
public IEnumerable<TVSerialEpisodeModel> tvserialEpisode { get; set; }
public IEnumerable<TVSerialModel> Tvserial { get; set; }
}
预期结果
如果TVSerialSpice有一个属性
TVSerial
,您可以通过外键点选
cDBContext.dbTvSerialEpisode
.Select(t =>
new {
t.TVSerial.Serial_ID,
t.TVSerial.Serial_Name,
t.Episode_Name
})
.Take(9)
.ToList();
您需要对EF使用的模型稍加改进。必须在模型中包含引用对象 像这样
public virtual TVSerialModel TVSerialModel { get; set; }
在主表中。这样,您也可以选择参考表。
当您定义了与virtual关键字的关系时,实体框架使用延迟加载。这意味着,在首次访问相关对象之前,不会加载它们。延迟加载听起来不错,但它会降低性能,因为有更多的往返数据库,如果不小心,延迟加载可能会导致选择N+1问题。您可以通过关闭延迟加载来防止延迟加载并选择N+1问题。
public virtual TVSerialModel TVSerialModel { get; set; }
public ActionResult NewEpisodeReleased()
{
cDBContext tvContext = new cDBContext();
TVSerial_Episode_VM tves=new TVSerial_Episode_VM();
tves= tvContext.dbTvSerialEpisodes.Include("TVSerialEpisodeModel")
.Include("TVSerialModel").ToList();
return View(tves);
}