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();