当我使用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 |名称|日期
有什么问题?
答案 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;
}
但是,如果你的桌子实际上比这里显示的要大得多,那么这才有意义。如果他们不是,我肯定会选择“真正的参与者” - 特别是如果你想在某些时候更新它们。