Учитывая следующее частичное представление Razor и понимание того, что Product является сопоставленным объектом NHibernate, поэтому вызовы IEnumerable здесь будут запускать запросы к базе данных (если они не кэшируются).
Это плохая практика? Должен ли я предоставлять более плоское представление моих данных для этого представления, чтобы я мог выполнять эти вызовы в своем контроллере/бизнес-логике?
@model IEnumerable<MyProject.Data.Models.Product>
<table>
<tr>
<th></th>
<th>Total Orders</th>
<th>Fulfilled</th>
<th>Returned</th>
<th>In stock</th>
</tr>
@foreach (var product in Model) {
<tr>
<td>
@Html.ActionLink(product .Name, "Detail", "Product", new { id = product.Id }, null)
</td>
<td>
@product.Orders.Count
</td>
<td>
@product.Orders.Where(x=>x.Fulfilled).Count()
</td>
<td>
@product.Orders.Where(x=>x.Returned).Count()
</td>
<td>
@(product.Stock.Count - product.Orders.Count)
</td>
</tr>
}
</table>