Ho appena iniziato a lavorare con EF. Ho dei modelli semplici Page
e 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; }
}
Questo è nel mio 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);
}
Anche se provo a eseguire il comando
dbContext.Pages.Where(x => x.RelPages1 != null);
Ho un'eccezione
InvalidOperationException: la proprietà 'Pagina1ID' sul tipo di entità 'Pagina' non è stata trovata. Assicurarsi che la proprietà esista e sia stata inclusa nel modello.
Questo sembra essere un bug in EF Core. È possibile archiviare i problemi all'indirizzo https://github.com/aspnet/EntityFramework/issues .
Se ciò che stai cercando di richiedere è l'insieme di tutte le pagine che hanno almeno una RelPages1, quindi una query LINQ che non ha lo stesso bug e restituisce il risultato previsto è:
dbContext.Pages.Where(x => x.RelPages1.Count() > 0)