"指定的包含路径在使用包含时无效

时间:2014-10-23 06:58:23

标签: c# entity-framework-5 entity

当我使用Include方法时出现此错误:

  

指定的包含路径无效

我的课程:

public class ClubMember
{
    public int Id { get; set; }

    public string Name { get; set; }

    public System.DateTime Date { get; set; }
}

public class Card
{
    public int Id { get; set; }

    public int CardNumber { get; set; }

    public ClubMember Member { get; set; }
}

我收到错误时的字符串:

IList<Card> cards = db.Cards.Include(n => n.Member.Name).Include(n => n.Member.Date).ToList();

我希望得到这个组合表:

  

CardNumber |名称|日期

有什么问题?

1 个答案:

答案 0 :(得分:0)

Include包括entites而不是属性:

var cards = db.Cards.Include(n => n.Member).ToList();

这会为加载的每个Member(包括所有标量属性)急切加载相关的Card - 实体。
然后你可以访问它们:

foreach (var card in cards)
{
    int cardNumber = card.CardNumber;
    string name = card.Member.Name;
    DateTime date = card.Member.Date;
}

如果您只想获得这三个属性,您还可以将查询映射到匿名类型:

var cards = db.Cards.Select(c => 
                new {
                    CardNumber = c.CardNumber,
                    Name = c.Member.Name,
                    Date = c.Member.Date
                }
            ).ToList();

foreach (var card in cards)
{
    int cardNumber = card.CardNumber;
    string name = card.Name;
    DateTime date = card.Date;
}

但是,如果你的桌子实际上比这里显示的要大得多,那么这才有意义。如果他们不是,我肯定会选择“真正的参与者” - 特别是如果你想在某些时候更新它们。