如何在cshtml中显示连接表

时间:2016-06-14 00:26:10

标签: c# asp.net-mvc entity-framework join razor

我需要连接几个表并在cshtml中显示它们,但我遇到了模型问题。我收到错误:

“传入字典的模型项目类型为'System.Data.Entity.Infrastructure.DbQuery 1[DziennikASPTest4.Controllers.PROJEKTYController+ProwadzacyProjekty]', but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable 1 [DziennikASPTest4.Models.ProwadzacyProjekty]'。”

我创建了查询:

            var projekt = from p in db.PROJEKTY
                       join przedm in db.PRZEDMIOTY on p.id_przedmiotu equals przedm.id_przedmiotu
                       join prow in db.PROWADZACY on przedm.id_prowadzacego equals prow.id_prowadzacego
                       where prow.id_prowadzacego == 1
                       select new ProwadzacyProjekty
                       {
                           PROJEKTY = p,
                           PRZEDMIOTY = przedm,
                           PROWADZACY = prow

                       };
        return View(projekt);

和型号:

    public class ProwadzacyProjekty
    {
        public PROJEKTY PROJEKTY { get; set; }
        public PRZEDMIOTY PRZEDMIOTY { get; set; }
        public PROWADZACY PROWADZACY { get; set; }
    }

我尝试在cshtml中显示它:

@model IEnumerable<DziennikASPTest4.Models.ProwadzacyProjekty>
@foreach (var item in Model)
{
     <div>@item.PROJEKTY.opis</div>
}

我应该怎么做?

1 个答案:

答案 0 :(得分:0)

在将查询返回到视图之前,使用.ToList()解析您的查询。

return View(projekt.ToList());

另外,检查新模型的命名空间以确保创建正确的类型而不是生成的实体类型。

select new DziennikASPTest4.Models.ProwadzacyProjekty
{
    PROJEKTY = p,
    PRZEDMIOTY = przedm,
    PROWADZACY = prow
};