繁体   English   中英

Linq select为两个嵌套对象之一返回null

[英]Linq select returns null for one of two nested objects

我有一个Linq select语句,它应该返回有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始终为null。

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

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

您在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;

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM