如何连接两个模型并在mvc 3.0 EF 5中显示它们

时间:2016-01-11 07:27:17

标签: entity-framework asp.net-mvc-3 model-view-controller

我有两个表具有主键和foriegn键概念。我想代表这些密钥获取组合数据。我不知道如何将表格绑定到单个模型中并将其显示在视图中。

模型

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; }
}

控制器

public ActionResult NewEpisodeReleased()
{
    cDBContext tvContext = new cDBContext();

    TVSerial_Episode_VM tves=new TVSerial_Episode_VM(); 
    tves= tvContext.dbTvSerialEpisodes.
    Join(tvContext.dbTvSerials, p => p.Serial_ID, r => r.Serial_ID,(p, r) => new { p, r }).
Select(o => new TVSerial_Episode_VM
            { ****what should i write here to get all columns from both table**** }).
Take(9).ToList();            
    return View(tves);
}

预期结果

enter image description here

3 个答案:

答案 0 :(得分:0)

如果TVSerialEpisode有一个属性TVSerial,你可以点击你的外键。

cDBContext.dbTvSerialEpisode
    .Select(t => 
        new {
            t.TVSerial.Serial_ID, 
            t.TVSerial.Serial_Name, 
            t.Episode_Name
        })
    .Take(9)
    .ToList();

答案 1 :(得分:0)

您需要改进与EF一起使用的模型。您必须在模型中包含参考对象。

喜欢这个

public virtual TVSerialModel TVSerialModel { get; set; } 
主表中的

。这样你也可以选择推荐表。

答案 2 :(得分:0)

EF Include

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);
}