0

我有两张桌子:

产品:
ProductID、ProductName

化合物:

CompoundID、ComponentID、数量

绑定为下一个:

1 产品。ProductID --> 许多化合物。化合物 ID

1 产品。ProductID --> 许多化合物。组件ID

Products 项目可以是一个化合物、一个组件或两者兼而有之。

我需要一个视图为每个化合物返回其组件名称和数量。

MyController 方法:

public ActionResult CompoundProduct()
    {
        var Compounds = db.Compounds.Include(s => s.Products);
        return View(Compounds.ToList());
    }

MyView 代码:@model IEnumerable

<table>
@foreach (var item in Model) 
{
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.CompoundID)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.ComponentID)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Products.ProductName)
        </td>
    </tr>
}
</table>

使用这种方法,我得到一个重复的化合物名称列表,而不是每个化合物的不同组件名称,如下图所示: 在此处输入图像描述

请问有什么帮助吗?

4

1 回答 1

1

当您从数据库创建模型时,EF 应该已经创建了两个导航属性ProductsProducts1与两个外键CompoundIDComponentID. 您可能使用了属于 的错误导航属性,而CompoundID不是属于 的导航属性ComponentID。而不是Products尝试Products1Include...中使用

var Compounds = db.Compounds.Include(s => s.Products1);

...在视图中:

@Html.DisplayFor(modelItem => item.Products1.ProductName)
于 2013-03-12T17:56:34.737 回答