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

Но, конечно, я получаю «Ссылка на объект не указывает на экземпляр объекта» в строке: Me.Status.StatusID = proj.Status.StatusID

Как передать значения связанных сущностей при расширении частичных классов? Или я просто далеко от базы, и есть гораздо более простой способ сделать то, что я пытаюсь сделать здесь?


person RichC    schedule 21.12.2008    source источник


Ответы (1)


Похоже, вы пытаетесь загрузить объект на основе идентификатора из конструктора.

Лично я бы не стал использовать конструктор для загрузки объекта, вы можете либо использовать общую функцию, либо использовать 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
person bendewey    schedule 21.12.2008
comment
Спасибо! теперь, если я смогу понять, как вставлять обновления и удалять, я готов! ха-ха - person RichC; 21.12.2008
comment
Это намного проще, чем вы думаете. просто создайте новый вызов проекта db.AddToProjects(project) и скажите db.SaveChanges - person bendewey; 21.12.2008