Как отобразить несколько моделей в рамках одного foreach при наличии таблицы «многие ко многим»?
Есть 3 таблицы (tblProduct, tblCustomer, tblOrder
).tblOrder
& tblProduct
- «многие ко многим», а tblCustomer
& tblOrder
- «один ко многим».
Я хочу объединить эти 3 таблицы и отобразить записи, связанные с OrderNo
.
Я использовал базу данных Entity Framework в первую очередь (поэтому у меня нет промежуточной таблицы для связи многих со многими).
Пожалуйста, помогите мне.Я новичок в MVC.Заранее спасибо.
Вот мои столы:
Product
стол:
public partial class tblProduct
{
[Key]
public int ProductId { get; set; }
public string UnitPrice { get; set; }
public virtual ICollection<tblOrder> tblOrders { get; set; }
}
Customer
стол:
public partial class tblCustomer
{
[Key]
public int CustomerCode { get; set; }
public string CustomerName { get; set; }
public virtual ICollection<tblOrder> tblOrders { get; set; }
}
Order
таблица:
public partial class tblOrder
{
{
this.tblProducts = new HashSet<tblProduct>();
}
[Key]
public int OrderNo { get; set; }
public Nullable<int> Quantity { get; set; }
public Nullable<double> Discount { get; set; }
public Nullable<double> Total { get; set; }
public Nullable<double> SubTotal { get; set; }
public Nullable<double> DiscountTotal { get; set; }
public Nullable<double> Tax { get; set; }
public Nullable<double> NetTotal { get; set; }
public int CustomerCode { get; set; }
public virtual tblCustomer tblCustomer { get; set; }
public virtual ICollection<tblProduct> tblProducts { get; set; }
}
Просмотр модели, которую я создал:
public class OrderCustomerProductViewModel
{
public int OrderNo { get; set; }
public string CustomerName { get; set; }
public int ProductId { get; set; }
public Nullable<int> Quantity { get; set; }
public string UnitPrice { get; set; }
public Nullable<double> Discount { get; set; }
public Nullable<double> Total { get; set; }
}
Я пробовал это, но я получил ошибку:
public ActionResult Index(int id)
{
var results = (db.tblOrders.Where(l => l.OrderNo == id).Include(c => c.tblCustomer).Include(p => p.tblProducts)
.Select(v => new OrderCustomerProductViewModel
{
OrderNo = v.OrderNo,
CustomerName= v.tblCustomer.CustomerName,
ProductId = v.tblProducts.ProductId, <------ ERROR
Quantity = v.Quantity,
UnitPrice = v.tblProducts.UnitPrice, <------ ERROR
Discount = v.Discount,
Total = v.Total,
})).ToList();
return View(results);
}
Это мой View.cshtml
:
@foreach (var item in Model)
{
<tr id="rowtest">
<td height="100">@Html.DisplayFor(model => item.OrderNo)</td>
<td height="100">@Html.DisplayFor(model => item.CustomerName)</td>
<td height="100">@Html.DisplayFor(model => item.ProductId)</td>
<td height="100">@Html.DisplayFor(model => item.Quantity)</td>
<td height="100">@Html.DisplayFor(model => item.tblProductList.uni)</td>
<td height="100">@Html.DisplayFor(model => item.Discount)</td>
<td height="100">@Html.DisplayFor(model => item.Total)</td>
</tr>
}
Я добавил это в представление:
@model IEnumerable<GridViewFuction.Models.ViewModel.OrderCustomerProductViewModel>
Ошибка: ICollection не содержит определения для ProductId и UnitPrice
Это будетбольшая помощь, если вы можете мне помочь.