<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/SiteControl.Master" Inherits="System.Web.Mvc.ViewPage<IEnumerable<Website.SimpleRepository.Page>>" %>

<asp:Content ID="Content2" ContentPlaceHolderID="content" runat="server">

<h2>Page List</h2>

  <p>
    <%= Html.ActionLink("Create New", "Create") %>
</p>

<table>
    <tr>
        <th></th>
        <th>
            Display As
        </th>
        <th>
            Layout
        </th>

    </tr>

<% foreach (var item in Model) { %>

    <tr>
        <td>
            <%= Html.Encode(item.DisplayAs) %>
        </td>
        <td>
            <%= Html.Encode(item.Types.Name) %>
        </td>
    </tr>

<% } %>

</table>
</asp:Content>

У меня проблемы с доступом к item.Types.Name, он возвращает нулевое исключение. Моя модель данных сущности находится в отдельной библиотеке классов. Может ли кто-нибудь объяснить, почему он возвращает нулевое исключение и что я могу сделать, чтобы это исправить? Я видел другие проекты, которые ссылаются на связанные значения таблиц, но не могу понять, почему моя работа отличается ...

Любая информация по этому поводу была бы замечательной! Спасибо.

2
Adam 18 Май 2009 в 16:54
1
Отправьте код в действии контроллера.
 – 
mmx
18 Май 2009 в 16:57

3 ответа

Лучший ответ

Как вы запрашиваете данные?

Я обнаружил, что текущая настройка EF требует от меня более явного использования магических строк, чем мне бы хотелось:

public IEnumerable<Item> GetItems(){
  ObjectQuery<Item> items = ItemSet.Include("Types");

  return (from i in items
          where [...]
          select i);
}

Это, конечно, не дает вам возможности проверить внешние ключи во время компиляции, но, по крайней мере, вернет их сейчас.

0
Zhaph - Ben Duguid 18 Май 2009 в 17:13

Убедитесь, что ваши отношения внешнего ключа в сопоставлении сущностей допускают отложенную загрузку или эти ссылочные свойства.

0
Nick Berardi 18 Май 2009 в 16:58

Оказывается, я новичок, как я и ожидал. Решением моей проблемы было то, что я не передавал связанные таблицы в представление. Спасибо за ответы!

0
AdamAdam 18 Май 2009 в 17:27