外鍵“實體類型Y上的屬性X無法找到”實體框架核心

c# entity-framework entity-framework-core foreign-keys

我剛剛開始使用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”。確保該屬性存在且已包含在模型中。

熱門答案

這似乎是EF Core中的一個錯誤。您可以通過https://github.com/aspnet/EntityFramework/issues提交問題。

如果您要查詢的是具有至少一個RelPages1的所有頁面的集合,那麼不具有相同錯誤並返回期望結果的LINQ查詢是:

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


Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow