1

我有一个 Linq 选择语句,它应该返回具有 2 个嵌套对象的对象。问题是,其中一个嵌套对象返回 null 而另一个按预期工作。

这是被查询的对象:

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 始终为空。

我已经检查并仔细检查了数据库中的 Card_Id 列是否填充了与 Card 表对应的正确 ID。

是什么导致 Card 嵌套对象返回为 null 而 Character 嵌套对象正确返回?

4

1 回答 1

3

您在 linq 查询中引用Character,因此包含在内。你不是在引用Card。尝试如下预加载Cards

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

我假设您的导航属性在上面被命名为“卡片”。

于 2013-04-22T17:28:49.163 回答