获取外键字段时出现ObjectDisposedException

时间:2011-04-29 14:09:11

标签: entity-framework

我使用Db Context Generator使用EF 4创建了我的模型。 我的模型是这样的:

计划表: ID 名称

组表: ID 名称 ProgramID(与Program.ID相关联)

我想在网格中显示这些列:

Program.Name - Group.Name

但是grdGroups.DataSource = db.Groups.ToList()

不会返回Program.Name

当我尝试这个时,我得到了ObjectDisposedException。

Partial Public Class Group 
    Public ReadOnly Property ProgramName() As String 
        Get 
            Return Program.Name 
        End Get
    End Property
End Class

返回Program.Name以将其包含在网格数据源中的最佳方法是什么?

1 个答案:

答案 0 :(得分:5)

  

当我尝试这个时,我得到了   的ObjectDisposedException

问题是延迟加载 - EF没有实现相关的Program实体,因此当您尝试访问Program.Name时,它将尝试重新查询数据库,但上下文已被处理这一点,所以你得到一个例外。

您可以在检索Include()实体时使用Group查询,以指定您还要加载相关的Program实体,即:

var groups = context.Groups.Include(x => x.Program);