Asp.net MVC和Entity Framework,无法访问相关表

时间:2009-05-18 12:54:16

标签: asp.net-mvc entity-framework

<%@ 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它返回一个空异常。我将我的实体数据模型放在一个单独的类库中。任何人都可以解释为什么它返回一个null异常以及我可以做些什么来解决这个问题?我已经看到其他项目引用相关的表值,但无法解决为什么我的工作不同......

有关此主题的任何信息都会很棒!感谢。

3 个答案:

答案 0 :(得分:0)

确保实体映射中的外键关系允许延迟加载或这些引用属性。

答案 1 :(得分:0)

您如何查询数据?

我发现当前的EF设置要求我使用魔术字符串比我想要的更明确:

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

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

这当然不会让你对foriegn键进行编译时检查,但它现在至少会返回它们。

答案 2 :(得分:0)

原来我是一个像我预期的新手。我的问题的解决方案是我没有将关联表传递给视图。谢谢你的回答!