外键“实体类型Y上的属性X无法找到”实体框架核心

时间:2016-08-08 18:55:54

标签: c# entity-framework foreign-keys entity-framework-core

我刚刚开始使用EF。 我有简单的模型PageRelated Pages

public class Page
{
    public int ID { get; set; }
    [Required]
    public string UrlName { get; set; }
    [Required]
    public string Title { get; set; }
    public List<RelatedPages> RelPages1 { get; set; }
    public List<RelatedPages> RelPages2 { get; set; }
}
public class RelatedPages
{
    public int ID { get; set; }
    public int Page1ID { get; set; }
    public Page Page1 { get; set; }
    public int Page2ID { get; set; }
    public Page Page2 { get; set; }
}

这是在我的DbContext中:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<Page>().HasIndex(x => x.UrlName).IsUnique();

    modelBuilder.Entity<RelatedPages>().HasOne(x => x.Page1).WithMany(x => x.RelPages1).HasForeignKey(x => x.Page1ID);
    modelBuilder.Entity<RelatedPages>().HasOne(x => x.Page2).WithMany(x => x.RelPages2).HasForeignKey(x => x.Page2ID);
}

虽然我尝试执行命令

dbContext.Pages.Where(x => x.RelPages1 != null);

我有一个例外

  

InvalidOperationException:找不到实体类型“Page”上的属性“Page1ID”。确保该属性存在且已包含在模型中。

1 个答案:

答案 0 :(得分:2)

这似乎是EF Core中的一个错误。您可以在https://github.com/aspnet/EntityFramework/issues处提交问题。

如果您要查询的是具有至少一个RelPages1的所有页面的集合,则LINQ查询没有相同的错误并返回期望结果:

dbContext.Pages.Where(x => x.RelPages1.Count() > 0)