1

2 つのネストされたオブジェクトを持つオブジェクトを返すことになっている Linq select ステートメントがあります。問題は、ネストされたオブジェクトの 1 つが null を返し、もう 1 つが意図したとおりに機能していることです。

クエリ対象のオブジェクトは次のとおりです。

public class CharInvCard
{
    public int ID { get; set; }
    public Character Character { get; set; }
    public Card Card { get; set; }
    public bool inDeck { get; set; }
    public bool inHand { get; set; }
    public bool inDiscard { get; set; }
}

これが私のLinqクエリです:

IQueryable<CharInvCard> CardsInHand = from x in db.CharInvCards
                               where x.Character.ID == character.ID && x.inHand == true
                               select x;

このクエリの結果を取得した後、次のように開始する foreach ループを実行します。

foreach (CharInvCard deckCardRec in CardsInHand)

デバッグ中に、deckCardRec の内容を調べると、ID、inHand、inDeck、inDiscard のすべてのプロパティと、ネストされた Character オブジェクト (およびそのプロパティ) が含まれていることがわかりますが、Card は常に null です。

データベースの Card_Id 列に Card テーブルに対応する適切な ID が入力されていることを確認し、再確認しました。

Character のネストされたオブジェクトが正しく返されるのに、Card のネストされたオブジェクトが null として返される原因は何ですか?

4

1 に答える 1

3

Characterlinq クエリで参照しているため、含まれています。しかし、あなたは参照していませんCardCards以下のように熱心な読み込みを試してください。

IQueryable<CharInvCard> CardsInHand = from x in db.CharInvCards.Include("Cards")
                               where x.Character.ID == character.ID && x.inHand == true
                               select x;

上記のナビゲーション プロパティの名前は「Cards」であると想定しています。

于 2013-04-22T17:28:49.163 に答える