0

Entity Framework を使い始めて間もないため、少し問題があります。

0 対 1 の関係を持つ 2 つのテーブルがあります。メイン テーブル (スタッフ) から行を選択すると、2 番目のテーブル (ステータス) に結合レコードがない行を選択しない限り問題ありません。これを行うと、2 番目のテーブルのプロパティにアクセスしようとすると、「オブジェクト参照がオブジェクトのインスタンスに設定されていません」というメッセージが表示されます。

        If Not cls.STATUS_DESC.STAFF_INFO Is DBNull.Value Then
            lblStatusDescription.Text = cls.STATUS_DESC.STAFF_INFO
        End If

レコードを取得するために使用する LINQ は次のとおりです。

    Dim account As STAFF =
        (From a In sa.STAFFs
         Where a.STAFF_NO = staffno
         Select a).FirstOrDefault

ステートメントにはサブ テーブルへの直接参照はありませんが、結合はデータベース ダイアグラムで定義されているため、プロパティを参照できます。

これは非常に基本的な問題だと確信していますが、前述したように、まだ使い始めたばかりです。

4

2 に答える 2

0

I'm not sure if I can interpret your code correctly but I think it has to do with the Lazy Loading feature of Entity Framework. You must explicitly include the reference to load it into memory. You can to this by using the Include() method as below. I assume that STATUS_DESC is the name of the navigation property. Replace it with the actual one if I'm wrong:

Dim account As STAFF =
    (From a In sa.STAFFs Where a.STAFF_NO = staffno Select a) _
    .Include("STATUS_DESC") _
    .FirstOrDefault
于 2012-12-13T10:06:53.043 に答える
0

次を追加して回避しました:

cls.STATUS_DESC が何もない場合

終了する場合

これは、今考えてみるとかなり明白なように思えます。これは最も効率的な方法ですが、EF は単純な左結合を処理できたと思います。

于 2012-12-13T10:47:33.183 に答える