Entity framework MVC4中的实体框架-包含返回错误结果
我有两张桌子: 产品:Entity framework MVC4中的实体框架-包含返回错误结果,entity-framework,asp.net-mvc-4,include,Entity Framework,Asp.net Mvc 4,Include,我有两张桌子: 产品: ProductID,产品名称 化合物: 组件ID,组件ID,数量 绑定为下一个: 1产品。ProductID-->许多化合物。CompoundID 1产品。ProductID-->许多化合物。ComponentID 产品项可以是化合物、组分或两者 我需要一个视图为每个化合物返回其组件名称和数量 MyController方法: public ActionResult CompoundProduct() { var Compounds = db.Com
ProductID,产品名称 化合物: 组件ID,组件ID,数量 绑定为下一个: 1产品。ProductID-->许多化合物。CompoundID 1产品。ProductID-->许多化合物。ComponentID 产品项可以是化合物、组分或两者 我需要一个视图为每个化合物返回其组件名称和数量 MyController方法:
public ActionResult CompoundProduct()
{
var Compounds = db.Compounds.Include(s => s.Products);
return View(Compounds.ToList());
}
MyView代码:
@模型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>
@foreach(模型中的var项目)
{
@DisplayFor(modelItem=>item.CompoundID)
@DisplayFor(modelItem=>item.ComponentID)
@Html.DisplayFor(modelItem=>item.Products.ProductName)
}
使用此方法,我可以获得重复的化合物名称列表,而不是每个化合物的不同组件名称,如下图所示:
有什么帮助吗?当您从数据库创建模型时,EF应该已经创建了两个与两个外键
componendid
和componendid
相关的导航属性Products
和Products1
。您可能使用了属于ComponentID
的错误导航属性,而不是属于ComponentID
的导航属性。不要使用产品
而是尝试在包含
中使用产品1
var Compounds = db.Compounds.Include(s => s.Products1);
…并且认为:
@Html.DisplayFor(modelItem => item.Products1.ProductName)
从何处获取复合名称?复合名称和组件名称都来自产品表ProductName字段。您能否显示实体类和映射?您的
复合实体中是否有两个名为ProductXXX
的导航属性?显然,从components
到Products
表,您有两个外键(componendid
和componendid
),因此您应该有两个属性。您在Include
中使用的一个可能与componendid
相关,但您需要与componendid
相关的一个。我实际上指的是数据库表,而不是视图。但还有一个问题:你说过产品1
会产生同样的结果。使用Products1
进行测试时,您是否在Include
和视图(@Html.DisplayFor(modelItem=>item.Products1.ProductName
)中使用了Products1
?