我如何进行此加入?

时间:2017-11-27 17:11:21

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

我正在用实体框架做一个大学项目,而且我正在做一些JOIN&。我做得很好,直到我加入这个我不知道该怎么做的事。 简化我必须实现的功能:我有一个按钮,当我点击它时,它必须显示表格中的所有信息,这就是为什么我需要创建JOIN,我创建了一个为此目的的模型。

这是我的SQL数据库的屏幕截图: SQL Database

这是我需要将MetaEspecifica JOIN放在哪里的代码 外键来自AreaProcesso:

// GET: AreaProcesso/Details/5
    public ActionResult Details(int? id)
    {
        if (id == null)
        {
            return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
        }

        var item = (from ap in db.AreaProcesso
                    join mg in db.MetaGenerica on ap.IdAreaProcesso equals mg.IdMetaGenerica
                    join model in db.Modelo on ap.IdAreaProcesso equals model.IdModelo
                    from nc in db.NivelCapacidade
                    from c in db.Categoria
                    from me in db.MetaEspecifica
                    where ap.IdAreaProcesso == id.Value
                    select new AreaProcessoModelView()
                    {
                        SiglaMetaGenerica = mg.Sigla,
                        NomeMetaGenerica = mg.Nome,
                        DescricaoMetaGenerica = mg.Descricao,
                        Sigla = ap.Sigla,
                        Nome = ap.Nome,
                        Descricao = ap.Descricao,
                        SiglaModelo = model.Sigla,
                        NomeModelo = model.Nome,
                        DescricaoModelo = model.Descricao,
                        SiglaNivelCapacidade = nc.Sigla,
                        NomeNivelCapacidade = nc.Nome,
                        DescricaoNivelCapacidade = nc.Descricao,
                        NomeCategoria = c.Nome
                    }).FirstOrDefault();

        if (item == null)
        {
            return HttpNotFound();  // Or a return a view with message "item not found"
        }
        return View(item);
    }

1 个答案:

答案 0 :(得分:0)

如果您需要包含JSON的HTML页面,请在查看页面下使用此部分

@section Scripts {
    var jsonData= @Html.Raw(Json.Encode(Model.YourDataCollection));
}

如果您只需要浏览器中的JSON数据,请更改您的控制器并返回Json,如下所示:

return Json(item, JsonRequestBehavior.AllowGet);

小心如果使用return Json你说MVC这不是视图页面而只是数据序列化页面

要查看Details.cshtml文件不需要模型,只有在设计页面布局后才在脚本部分添加此脚本

@section Scripts {
    $.ajax({
        dataType: 'json',
        url: '@Url.Action("Details")',
        type: 'GET',
        cache: false,
        success: function(result) {
            // use json result
        }
    });
}