我刚刚开始使用EF。
我有简单的模型Page
和Related 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”。确保该属性存在且已包含在模型中。
答案 0 :(得分:2)
这似乎是EF Core中的一个错误。您可以在https://github.com/aspnet/EntityFramework/issues处提交问题。
如果您要查询的是具有至少一个RelPages1的所有页面的集合,则LINQ查询没有相同的错误并返回期望结果:
dbContext.Pages.Where(x => x.RelPages1.Count() > 0)