Entity Framework - как мне использовать отношения сущностей в моих расширенных классах?
Вопрос
Я пытаюсь расширить частичные классы, которые создает entity framework, чтобы мне было легче работать с объектами, как в приведенном ниже коде (пожалуйста, дайте мне знать, если есть лучший или более исключительный способ сделать это с entity framework)
Public Sub New(ByVal ProjectID As Integer)
Dim proj As Project = (From p In db.Project.Include("Status") Where p.ProjectID = ProjectID).First
_ProjectID = proj.ProjectID
_ProjectName = proj.ProjectName
Me.Status.StatusID = proj.Status.StatusID 'I get errors here
Me.Status.StatusName = proj.Status.StatusName 'and here
End Sub
Но, конечно, я получаю "Ссылка на объект, не установленная для экземпляра объекта" в строке:Я.Статус.StatusID = проект.Статус.StatusID
Как я могу передать связанные значения сущностей при расширении частичных классов?Или я просто сильно ошибаюсь здесь, и есть гораздо более простой способ сделать то, что я пытаюсь сделать здесь?
Решение
Похоже, что вы пытаетесь загрузить объект на основе идентификатора из конструктора
Лично я бы не стал использовать конструктор для загрузки объекта, вы можете либо использовать общую функцию, либо использовать LINQ непосредственно в своем коде для загрузки вашего объекта.
используйте что-то вроде
Public Shared Function GetProjectById(ByVal ProjectId as Integer) as Project
Dim db As New MyDataContext
Return (From p In db.Project.Include("Status") Where p.ProjectID = ProjectID).FirstOrDefault
End Function