在MVC视图中,我正在寻找一种方法来确定父实体的子实体集合是否为空,因此我可以决定是否需要调用RenderPartial()。
对于一对一,我一直在使用以下内容:
<% if (Model.Book.GenreReference.EntityKey != null) %>
{.....}
但我不确定如何在一对多方案中执行此操作,或者如果它甚至可以 完成而不使用Include()或Load()。
答案 0 :(得分:2)
写一个视图模型:
public class BookPresentation
{
public Guid Id { get; set; }
public string Title { get; set; }
public bool HasOrders { get; set; }
public int ReviewCount { get; set; }
}
然后project到它上面:
var model = from b in db.Books
where b.Id == id
select new BookPresentation
{
Id = b.Id,
Title = b.Title,
HasOrders = b.Orders.Any(),
ReviewCount = b.Reviews.Count()
};
答案 1 :(得分:0)
首先,在将模型传递给视图时,您确实应该从数据库加载所有数据。鉴于此,您应该在查询中使用Include
(或之后使用Load
)来获取控制器操作中的子集合。
在视图中,您可以进行常规检查(某些内容):
<% if (Model.Book.Children != null && Model.Book.Children.Any()) %>
(而不是Children
您实际使用的是您拥有的导航属性 - 例如可能是Authors
。