开发者

Entity Framework 4 - check if navigation property collection is empty, without Include() or Load()

开发者 https://www.devze.com 2023-01-18 07:53 出处:网络
In an MVC view, I\'m looking for a way to determine if a parent entity\'s collection of child entities is empty, so I can decide if I need to call a RenderPartial() or not.

In an MVC view, I'm looking for a way to determine if a parent entity's collection of child entities is empty, so I can decide if I need to call a RenderPartial() or not.

For a one-to-one I've been using the following:

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

but I'm unsure how to do it in a one-to-many scenario, or if it can even be done without the use of Include() or Load().开发者_运维问答


Write a view model:

public class BookPresentation
{
    public Guid Id { get; set; }
    public string Title { get; set; }
    public bool HasOrders { get; set; }
    public int ReviewCount { get; set; }
}

Then project onto it:

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()
            };


First of all, you really should have all the data loaded from the DB by the time your model is passed on to the view. Given that, you should have used Include in your query (or Load afterwards) to grab the collection of children in the controller action.

In the view you then do a usual check (something along the lines of):

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

(Instead of Children you actually use the navigation property you have - could be Authors for example).

0

精彩评论

暂无评论...
验证码 换一张
取 消