Entity Framework 4 - проверьте, если коллекция свойств навигации пуста, без Include () или Load () - PullRequest
2 голосов
/ 28 сентября 2010

В представлении MVC я ищу способ определить, является ли коллекция дочерней сущности родительской сущности пустой, поэтому я могу решить, нужно ли мне вызывать RenderPartial () или нет.

Для индивидуального общения я использовал следующее:

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

, но я не уверен, как это сделать в сценарии один ко многим, илидаже можно сделать без использования Include () или Load ().

Ответы [ 2 ]

2 голосов
/ 28 сентября 2010

Напишите модель представления:

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

Затем Проецируйте на нее:

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()
            };
0 голосов
/ 28 сентября 2010

Прежде всего, вы действительно должны загрузить все данные из БД к моменту передачи вашей модели в представление. Учитывая это, вы должны были использовать Include в своем запросе (или Load впоследствии), чтобы получить коллекцию дочерних элементов в действии контроллера.

В представлении вы затем делаете обычную проверку (что-то вроде):

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

(вместо Children вы фактически используете имеющееся у вас свойство навигации - например, может быть Authors).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...