Ich habe diese Abfrage mit Entity Framework Core (v2), aber die Include
/ThenInclude
funktionieren nicht wie erwartet. Dies ist die Abfrage:Include funktioniert nicht nach SelectMany + Select in Entity Framework Core
var titlesOwnedByUser = context.Users
.Where(u => u.UserId == userId)
.SelectMany(u => u.OwnedBooks)
.Select(b => b.TitleInformation)
.Include(ti => ti.Title)
.ThenInclude(n => n.Translations);
Die Abfrage funktioniert, aber die Titel, die ich mit Titel Set null
bekommen kommen.
Nur zur Klarstellung die Klassen sind diese
class User
{
public int Id { get; set; }
public List<BookUser> OwnedBooks { get; set; }
}
class Book
{
public int Id { get; set; }
public TitleInformation TitleInformation { get; set; }
public List<BookUser> Owners { get; set; }
}
class BookUser
{
public int BookId { get; set; }
public int UserId { get; set; }
public Book Book { get; set; }
public User User { get; set; }
}
class MyContext
{
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<BookUser>()
.HasOne(x => x.User)
.WithMany(x => x.OwnedBooks)
.HasForeignKey(x => x.UserId);
modelBuilder.Entity<BookUser>()
.HasOne(x => x.Book)
.WithMany(x => x.Owners)
.HasForeignKey(x => x.BookId);
}
}
class TitleInformation
{
public int Id { get; set; }
public Title Title { get; set; }
public Title Subtitle { get; set; }
}
class Title
{
public int Id { get; set; }
public string OriginalTitle { get; set; }
public List<Translation> Translations { get; set; }
}
Was muss ich tun, um die Übersetzungen Last in der zurück abfragbar zu machen?
Können Sie die Konfiguration für Entitäten anzeigen? –
Sounds wie [Ignoriert enthält] (https://docs.microsoft.com/en-us/ef/core/querying/related-data). Sie sollten die Abfrage anders herum erstellen, ausgehend von 'context.TitleInformation'. –
@Herzl bitte überprüfen Sie das Update OP. – SuperJMN