LINQ to Entites: исчезновение подобъектов - PullRequest
0 голосов
/ 16 декабря 2009

Я пытаюсь понять, почему иногда мои подобъекты исчезают.

В моем виде списка у меня есть стандарт

<% foreach (var item in Model)

и когда я осматриваю предмет и модель, я вижу этот предмет. Карта имеет пару элементов.

На самом деле, в моем виде списка я могу сделать:

  <% foreach (var map in item.Map)
  <% Html.RenderPartial("MapView", map); %>

и MapView может получить доступ и отобразить все свойства. Я включаю подобъекты с:

  list = from item in _entities.DataTable
           .Include("LookupTable1")
           .Include("Map")
           .Include("Map.LookupTable2") select item;
  return View("List", list);

Но если я попытаюсь сделать:

 <%= Html.Encode(item.Map.FirstOrDefault().Field)%>

Я получаю исключение нулевого указателя, и item.Map содержит 0 элементов.

Кто-нибудь может объяснить, почему это происходит?

1 Ответ

0 голосов
/ 17 декабря 2009

Вы, вероятно, могли бы обойтись без операторов .Include. Я не уверен, что это решит вашу проблему, не зная причину нулевого указателя.

Как примечание: при выполнении MVC вам, вероятно, не следует выполнять запросы Linq в представлении (например, .FirstOrDefault).

list = from item in _entities.DataTable
       select new
       {
           Name = item.Name
           Maps = item.Maps
       };

Используя этот синтаксис, вы можете вместо этого выполнять больше запросов Linq в контроллере

list = from item in _entities.DataTable
       select new
       {
           Name = item.Name
           FirstMap = item.Maps.FirstOrDefault()
       };

Или даже

list = from item in _entities.DataTable
       select new
       {
           Name = item.Name
           Maps = from map in item.Maps
                  where map = somecondition
                  select map
       };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...