【问题标题】:A specified Include path is not valid. Entity Framework Code First指定的包含路径无效。实体框架代码优先
【发布时间】:2014-12-18 17:15:22
【问题描述】:

尝试在 EF 中运行查询时出现以下错误。 指定的包含路径无效。 EntityType“InvestmentClub”未声明名为“ClubMembers”的导航属性。

查询

return _context.InvestmentClubs.Where(x => x.InvestmentClubId == clubId)
                       .Include(x => x.Policies).Include(x => x.ClubMembers).FirstOrDefault();

投资俱乐部课

public class InvestmentClub
{
    public int InvestmentClubId { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
    public int CreatedBy { get; set; }
    public DateTime DateCreated { get; set; }
    public InvestmentClubType ClubType { get; set; }

    //Navigation properties
    [ForeignKey("CreatedBy")]
    public ApplicationUser ApplicationUser { get; set; }
    public ICollection<InvestmentClubMember> ClubMembers;
    public ICollection<InvestmentClubPolicy> Policies;
}

InvestmentClubPolicy 类

public class InvestmentClubPolicy
{
    public int InvestmentClubPolicyId { get; set; }
    public int InvestmentClubId { get; set; }
    public DateTime DateAdded { get; set; }
    public string PolicyStatement { get; set; }
    public AjoPolicyStatus PolicyStatus { get; set; }
    public InvestmentClub InvestmentClub { get; set; }
}

我没有将属性指定为虚拟,因为我不想急切加载相关对象。这可能是错误的原因吗?我们热切期待所有帮助。

【问题讨论】:

    标签: entity-framework ef-code-first lazy-loading


    【解决方案1】:
    public ICollection<InvestmentClubMember> ClubMembers;
    

    应该是

    public virtual ICollection<InvestmentClubMember> ClubMembers { get; set; }
    

    ...或者更好,

    public virtual ICollection<InvestmentClubMember> ClubMembers { get; protected set; }
    

    它必须是virtual,以便动态代理子类能够填充导航属性。他们不会因为属性是virtual而自动加载。

    .Include 扩展方法是急切加载的作用。

    【讨论】:

    • 它现在可以在没有虚拟的情况下工作。问题是我错误地将 ClubMembers 声明为字段而不是属性。
    【解决方案2】:

    ClubMembers 被声明为一个字段,但 EntityFramework 要求它是一个属性。声明如下:

    public ICollection<InvestmentClubMember> ClubMembers { get; set; };
    

    【讨论】:

    • 你说得对,亚历山大。我现在才观察到。我想是时候休息一下了。
    猜你喜欢
    • 1970-01-01
    • 2016-07-08
    • 2016-02-18
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 2017-09-01
    • 2014-05-23
    • 1970-01-01
    相关资源
    最近更新 更多