Die eigene Sammlung wird beim Abfragen der übergeordneten Entität mit SQLite nicht aufgefüllt [Duplikat]
Posted: 14 Jan 2025, 09:23
Ich habe eine Entität mit einer IReadOnlyList-Eigenschaft, der ein privates Listenfeld zugrunde liegt. Ich möchte diese Eins-zu-viele-Beziehung mithilfe von Entity Framework Core mit einer Instanz von IEntityTypeConfiguration konfigurieren.
Die beiden Entitäten:
Die Konfiguration:
Paket: Microsoft.EntityFrameworkCore.Sqlite" Version="9.0.0"
Ergebnis: Wenn ich mir die Tabellen in der Datenbank ansehe, sehe ich, dass die Beziehung mit Fremdschlüsseln korrekt eingerichtet ist und Werte mithilfe meines dbContext hinzugefügt werden können.
Wenn ich jedoch den Kontext abfrage, es füllt nie die _childEntities Liste.
Die Abfrage sieht so aus:
Die beiden Entitäten:
Code: Select all
public class ParentEntity
{
private ParentEntity(){}
public long Id { get; set; }
private readonly List _childEntities = new();
public IReadOnlyCollection ChildEntities => _childEntities;
}
public class ChildEntity
{
private ChildEntity(){}
public long Id { get; set; }
public string SomeProperty { get; set; }
}
Code: Select all
public class ParentEntityConfiguration : IEntityTypeConfiguration
{
public void Configure(EntityTypeBuilder builder)
{
builder.ToTable("ParentEntities");
builder.HasKey(pe => pe.Id);
builder.OwnsMany(pe => pe.ChildEntities, childEntity =>
{
childEntity.WithOwner().HasForeignKey("ParentEntityId");
childEntity.ToTable("ChildEntities");
childEntity.HasKey(ce => ce.Id);
childEntity.Property(ce => ce.SomeProperty).IsRequired();
});
builder.Navigation(pms => pms.ChildEntities).UsePropertyAccessMode(PropertyAccessMode.Field);
}
}
Ergebnis: Wenn ich mir die Tabellen in der Datenbank ansehe, sehe ich, dass die Beziehung mit Fremdschlüsseln korrekt eingerichtet ist und Werte mithilfe meines dbContext hinzugefügt werden können.
Wenn ich jedoch den Kontext abfrage, es füllt nie die _childEntities Liste.
Die Abfrage sieht so aus:
Code: Select all
List entities = _parentEntityContext.ParentEntities
.Include(p => p.ChildEntities)
.ToList();