使用包含时“指定的包含路径无效”

Posted

技术标签:

【中文标题】使用包含时“指定的包含路径无效”【英文标题】:"A specified Include path is not valid” when using Include 【发布时间】:2014-10-23 06:58:22 【问题描述】:

当我使用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();

我想要这张组合表:

卡号 |姓名 |日期

怎么了?

【问题讨论】:

.Include(n =&gt; n.Member) 应该足够了。 我试试这个,但结果更糟:|卡号 |会员 |在成员字段中只有这个字符串:“MyDataBase.Data.Entities.ClubMember” @viton-zizu 不,属性Member 不返回字符串"MyDataBase.Data.Entities.ClubMember",它返回MyDataBase.Data.Entities.ClubMember 类型的对象,ToString() 函数(你应该'不打电话)返回"MyDataBase.Data.Entities.ClubMember"。不要调用 ToString() 函数,而是参考对象的属性 NameDate @viton-zizu:我在回答中包含了一个简短的 sn-p 如何访问它们,但也许您应该多阅读一下“EF 的工作原理”。 EF 是一个 ORM,不返回“表”,而是返回“实体”,包括相关实体的“导航属性”... 【参考方案1】:

Include 是包含实体而不是属性:

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

这将为每个已加载的Card(包括所有标量属性)预先加载相关的Member-entity。 然后你就可以访问它们了:

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;

但这只有在您的桌子实际上比此处显示的大得多时才有意义。如果不是,我肯定会选择“真正的实体”——尤其是如果你想在某个时候更新它们。

【讨论】:

感谢您的回复!我会努力的! 对不起,一切顺利!再次感谢您!

以上是关于使用包含时“指定的包含路径无效”的主要内容,如果未能解决你的问题,请参考以下文章

catkin / ROS:如何在使用子模块时正确指定包含路径

尝试导入 sass 模块时,如何在 Vue CLI 中使用包含路径?

Visual Studio 自定义包含路径在链接时导致符号错误

需要/包含php文件时更改文件夹路径

您必须在类路径运行时异常中的 LWUIT 之前包含平台端口

文件包含漏洞