从表中获取单行,并在第二个表上进行联接,并在详细信息视图中显示

时间:2018-10-19 06:20:12

标签: c# list entity-framework join model

我有一个表,其中一个成分是carID,在bTable中 有车名。 现在我有一个表ID。 在控制器中,默认方式是这样

 public ActionResult Details(int? id)
{
var aObject= db.aTable.Find(id);
return View(aObject);

,然后我们使用aTable模型类生成“详细信息”视图。

但是在那种情况下,我将看到只显示汽车ID而不是名称的视图。 而且我想在查询aTable时加入bTable,并希望显示汽车名称文本。

为此,我必须创建新的模型类。我做完了但是如何使用实体框架通过联接执行单个对象查询并传输对象以进行查看?

    a table is 
   int aID
   string aName
   int carID

    b talbe is
   int bID
   string bcarName


 public class ModifiedaTableModel
{
        [Key]
        [Required(ErrorMessage = "aIDis required.")]
        public int aID{ get; set; }
        [Required(ErrorMessage = "aName required.")]
        public string aName{ get; set; }
        [Required(ErrorMessage = "carName required.")]
        public string carName{ get; set; }
}

3 个答案:

答案 0 :(得分:1)

如果您的CarIDbID,请执行以下操作:

var modifiedATableModel = (from a in aTable
                          join b in bTable
                          on a.carID equals b.bID
                          select new ModifiedaTableModel
                          {
                              aID = a.aID,
                              aName = a.aName,
                              carName = b.bcarName
                          }).FirstOrDefault();

答案 1 :(得分:0)

查看本文linq101Samples

选择1

 var query = db.aTable
               .Join(db.bTable, r => r.aID, 
                                p => p.bID, 
             (r,p) => new ModifiedaTableModel 
                      {
                         aID = r.aID,
                         aName = r.aName,
                         carName = p.carName
                      }).SingleOrDefault();

答案 2 :(得分:0)

在这里,我考虑了aTablebTable之间的成功满意的关系,并通过将两个表都连接在一起将查询结果投影到ModifiedaTableModel

public ActionResult Details(int? id)
{
    ModifiedaTableModel model = new ModifiedaTableModel();
    if (id != null)
    {
        model = (from a in db.aTable
                 join b in db.bTable on a.carID equals b.bID
                 where a.aID == id.Value
                 select new ModifiedaTableModel
                 {
                     aID = a.aID,
                     aName = a.aName,
                     carName = b.bcarName
                 }).SingleOrDefault();

        return View(model);
    }
    return View(model);
}