1

以下のコードのようにオブジェクトをより簡単に操作できるように、エンティティ フレームワークが作成する部分クラスを拡張しようとしています (エンティティ フレームワークでこれを行うためのより良い方法または例外的な方法があれば教えてください)。

    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

部分クラスを拡張するときに、関連するエンティティ値を渡すにはどうすればよいですか? それとも、私がここでやろうとしていることをはるかに簡単に行う方法がありませんか?

4

1 に答える 1

2

コンストラクターからのIDに基づいてオブジェクトをロードしようとしているようです

個人的にはコンストラクターを使用してオブジェクトをロードしません。共有関数を使用するか、コードで直接 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
于 2008-12-21T05:42:19.973 に答える