asp.net gridview模型绑定到可能的null实体

时间:2014-04-02 10:47:57

标签: c# asp.net entity-framework gridview lazy-loading

我的ui中有一个gridview,它绑定了BLL-> DAL调用的结果,如下所示: UI

private void BindGrid()
{
    gvUserList.ItemType = POCO.User;
    gvUserList.DataSource = GetUsers();
    gvUserList.DataBind();
}

DAL

public static List<User> GetAllUsers()
{
   using (var dbContext = new MyEntities())
   {
       return dbContext.Users.Include("Manager").Include("Status").Include("Office").ToList();
   }
}

延迟加载完美,但是我得到了延迟加载错误:

  

ObjectContext实例已被释放,无法再使用   对于需要连接的操作。

例如,当用户没有经理或用户没有数据库中的状态时。在绑定网格以处理空实体时,我需要做些什么吗?

1 个答案:

答案 0 :(得分:0)

似乎错误发生在我未包含的代码中,即

<asp:TemplateField HeaderText="Manager">
        <ItemTemplate>
        <asp:Label ID="lblUserManager" runat="server" Text='<%# Eval("Manager.FullName") %>' NullDisplayText="None"></asp:Label>
    </ItemTemplate>
</asp:TemplateField>

将Eval更改为Bind后,它起作用了。

<asp:TemplateField HeaderText="Manager">
        <ItemTemplate>
        <asp:Label ID="lblUserManager" runat="server" Text='<%# Eval("Manager.FullName") %>' NullDisplayText="None"></asp:Label>
    </ItemTemplate>
</asp:TemplateField>

希望这有助于其他人遇到同样的问题。