Entity Framework - как использовать ассоциации объектов? - PullRequest
2 голосов
/ 21 декабря 2008

Когда в моей базе данных есть таблицы с отношениями PK / FK (int) и когда они моделируются конструктором Entity Framework, все выглядит так, как должно быть. Я могу написать код ниже, и все, кажется, будет работать нормально, но затем, когда я запускаю код, я получаю сообщение об ошибке project.Status.StatusName, говоря, что ссылка на объект не установлена ​​на экземпляр объекта. Я предполагаю, что у меня сложилось впечатление, что структура заполняла связанные сущности, когда вы заполняли родительскую сущность.

    Dim db As New MyDbModel.MyDbEntities()

    Dim project As MyDbModel.Project = (From p In db.Project Where p.ProjectID = 1).First

    Response.Write(project.ProjectName)        
    Response.Write(project.Status.StatusName)

Ответы [ 2 ]

5 голосов
/ 21 декабря 2008

Попробуйте использовать Включить (RelationshipName)

Dim db As New MyDbModel.MyDbEntities()    
Dim project As MyDbModel.Project = (From p In db.Project.Include("Status") Where p.ProjectID = 1).First    
Response.Write(project.ProjectName)            
Response.Write(project.Status.StatusName)
3 голосов
/ 21 декабря 2008

Entity Framework не загружает связанные сущности, если вы не скажете это. Чтобы получить доступ к связанным сущностям, вам нужно либо явно их загрузить (), либо использовать Include (). Вот короткий образец.

http://blogs.msdn.com/bethmassi/archive/2008/12/10/master-details-with-entity-framework-explicit-load.aspx

...