ObjectDisposedException при получении поля внешнего ключа - PullRequest
1 голос
/ 29 апреля 2011

Я создал свою модель, используя Db Context Generator, используя EF 4. Моя модель такая:

Таблица программ: Я БЫ Имя

Групповая таблица: Я БЫ название 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 Ответ

5 голосов
/ 29 апреля 2011

Когда я пытаюсь это сделать, я получаю ObjectDisposedException

Проблема заключается в отложенной загрузке - EF не материализовал связанную сущность Program, следовательно, при попытке доступа к Program.Name онапопытается выполнить повторный запрос к БД, но контекст был удален на этом этапе, поэтому вы получите исключение.

Вы можете использовать запрос Include() при получении вашей сущности Group, чтобы указатьчто вы также хотите загрузить связанный объект Program, то есть:

var groups = context.Groups.Include(x => x.Program);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...