Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用EF 6 MVC 5并从多对多关系中检索数据_C#_Asp.net Mvc_Entity Framework_Many To Many - Fatal编程技术网

C# 使用EF 6 MVC 5并从多对多关系中检索数据

C# 使用EF 6 MVC 5并从多对多关系中检索数据,c#,asp.net-mvc,entity-framework,many-to-many,C#,Asp.net Mvc,Entity Framework,Many To Many,我在ASP.NET MVC 5和Entity Framework 6中遇到一些问题。 我的申请有PRODUTO,这些有APLICAO 一个产品可以有多个APLICAO,一个APLICAO可以属于多个产品。所以,这是一种多对多的关系 一些信息: 普罗杜托 public class Produto { public int Id { get; set; } public string Nome { get; set; } public string Descricao { g

我在ASP.NET MVC 5和Entity Framework 6中遇到一些问题。
我的申请有PRODUTO,这些有APLICAO
一个产品可以有多个APLICAO,一个APLICAO可以属于多个产品。所以,这是一种多对多的关系

一些信息:

普罗杜托

public class Produto
{
    public int Id { get; set; }
    public string Nome { get; set; }
    public string Descricao { get; set; }        
    public ICollection<Aplicacao> Aplicacoes { get; set; }        
}
索引视图

<table class="table">
<tr>
    <th>
        @Html.DisplayNameFor(model => model.Nome)
    </th>
    <th>
        @Html.DisplayNameFor(model => model.Descricao)
    </th>
    <th>
        @Html.DisplayNameFor(model => model.Aplicacoes)
    </th>
    <th></th>
</tr>
@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.Nome)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Descricao)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Aplicacoes)
        </td>
        <td>
            @Html.ActionLink("Edit", "Edit", new { id=item.Id }) |
            @Html.ActionLink("Details", "Details", new { id=item.Id }) |
            @Html.ActionLink("Delete", "Delete", new { id=item.Id })
        </td>
    </tr>
}
</table>

@DisplayNameFor(model=>model.Nome)
@DisplayNameFor(model=>model.descripcao)
@DisplayNameFor(model=>model.Aplicacoes)
@foreach(模型中的var项目){
@DisplayFor(modeleItem=>item.Nome)
@DisplayFor(modeleItem=>item.descripcao)
@DisplayFor(modelItem=>item.Aplicacoes)
@ActionLink(“编辑”,“编辑”,新的{id=item.id})|
@ActionLink(“详细信息”,“详细信息”,新的{id=item.id})|
@ActionLink(“删除”,“删除”,新的{id=item.id})
}
我需要帮助来修复检索视图模型的查询,以便在索引视图中显示与一个产品相关的每个应用程序的名称


谢谢,

在@Gert Arnold评论我的查询是正确的之后,我发现了“错误”:

在我看来,我已经为从DB检索到的APLICAO的名称包括了另一个foreach。现在我的观点是这样的:

<table class="table">
<tr>
    <th>
        @Html.DisplayNameFor(model => model.Nome)
    </th>
    <th>
        @Html.DisplayNameFor(model => model.Descricao)
    </th>
    <th>
        @Html.DisplayNameFor(model => model.Aplicacoes)
    </th>
    <th></th>
</tr>
@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.Nome)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Descricao)
        </td>
        <td>
            <ul>
                @foreach (var app in item.Aplicacoes)
                {
                    <li>@app.Nome</li>
                }
            </ul>
        </td>
        <td>
            @Html.ActionLink("Edit", "Edit", new { id=item.Id }) |
            @Html.ActionLink("Details", "Details", new { id=item.Id }) |
            @Html.ActionLink("Delete", "Delete", new { id=item.Id })
        </td>
    </tr>
}

@DisplayNameFor(model=>model.Nome)
@DisplayNameFor(model=>model.descripcao)
@DisplayNameFor(model=>model.Aplicacoes)
@foreach(模型中的var项目){
@DisplayFor(modeleItem=>item.Nome)
@DisplayFor(modeleItem=>item.descripcao)
    @foreach(item.Aplicacoes中的var应用程序) {
  • @app.Nome
  • }
@ActionLink(“编辑”,“编辑”,新的{id=item.id})| @ActionLink(“详细信息”,“详细信息”,新的{id=item.id})| @ActionLink(“删除”,“删除”,新的{id=item.id}) }
顺便说一句,找到一个
aplicaco
是一种效率很低的方法。您应该直接从数据库中查询,而不是从首先得到的整个列表中查询。但在主题上:您的模型和查询似乎没有任何问题。您是否检查了执行的SQL?@Gert,我在另一个查询中查询了APLICAO,如何在视图中加入它们?每个产品都可以有许多应用程序。我必须使用viewmodel来连接从数据库检索到的所有数据?
var app = context.Aplicacoes.ToList().Find(a => a.Nome == "Industrial");
var app2 = context.Aplicacoes.ToList().Find(a => a.Nome == "Betoneiras");

var produto = new Produto {Nome = "Produto 1", Descricao = "Descrição", Aplicacoes = new List<Aplicacao>{app, app2}};

      context.Produtos.Add(produto);
public ActionResult Index()
    {
        return View(db.Produtos.Include(x => x.Aplicacoes.Select(y => y.Produtos)).ToList());
    }
<table class="table">
<tr>
    <th>
        @Html.DisplayNameFor(model => model.Nome)
    </th>
    <th>
        @Html.DisplayNameFor(model => model.Descricao)
    </th>
    <th>
        @Html.DisplayNameFor(model => model.Aplicacoes)
    </th>
    <th></th>
</tr>
@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.Nome)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Descricao)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Aplicacoes)
        </td>
        <td>
            @Html.ActionLink("Edit", "Edit", new { id=item.Id }) |
            @Html.ActionLink("Details", "Details", new { id=item.Id }) |
            @Html.ActionLink("Delete", "Delete", new { id=item.Id })
        </td>
    </tr>
}
</table>
<table class="table">
<tr>
    <th>
        @Html.DisplayNameFor(model => model.Nome)
    </th>
    <th>
        @Html.DisplayNameFor(model => model.Descricao)
    </th>
    <th>
        @Html.DisplayNameFor(model => model.Aplicacoes)
    </th>
    <th></th>
</tr>
@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.Nome)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Descricao)
        </td>
        <td>
            <ul>
                @foreach (var app in item.Aplicacoes)
                {
                    <li>@app.Nome</li>
                }
            </ul>
        </td>
        <td>
            @Html.ActionLink("Edit", "Edit", new { id=item.Id }) |
            @Html.ActionLink("Details", "Details", new { id=item.Id }) |
            @Html.ActionLink("Delete", "Delete", new { id=item.Id })
        </td>
    </tr>
}