代码之家  ›  专栏  ›  技术社区  ›  asfsadf

实体框架4-检查导航属性集合是否为空,没有Include()或Load()

  •  2
  • asfsadf  · 技术社区  · 16 年前

    在MVC视图中,我正在寻找一种方法来确定父实体的子实体集合是否为空,以便决定是否需要调用RenderPartial()。

    <% if (Model.Book.GenreReference.EntityKey != null) %>
         {.....}
    

    但我不确定如何在一对多的情况下做到这一点,或者它是否可以 是 不使用Include()或Load()完成。

    2 回复  |  直到 16 年前
        1
  •  2
  •   Craig Stuntz    16 年前

    编写视图模型:

    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()
                };
    
        2
  •  0
  •   Yakimych    16 年前

    首先,您真的应该在模型传递到视图时从DB加载所有数据。既然如此,你应该用 Include 在您的查询中(或 Load

    在视图中,然后执行常规检查(沿着以下行):

    <% if (Model.Book.Children != null && Model.Book.Children.Any()) %>
    

    (代替 Children Authors 例如)。