Я пытаюсь смоделировать следующую структуру класса, где PersonDetails
является принадлежащим объектом, использующим разбиение таблицы, т.е. в схеме БД нет таблицы с именем PersonDetails
Я использую ядро платформы сущностей 2.2
public class Person
{
public long Id { get; set; }
public PersonDetails Details { get; set; }
}
public class PersonDetails
{
public IReadOnlyCollection<Address> Addresses { get; set; }
public IReadOnlyCollection<Contact> Contacts { get; set; }
}
public class Address
{
public string Street { get; set; }
public string Suburb { get; set; }
}
public class Contact
{
public string PhoneNumber { get; set; }
public string EmailAddress { get; set; }
}
Карты типов сущностей выглядят следующим образом:
public class PersonTypeConfiguration : IEntityTypeConfiguration<Person>
{
public void Configure(EntityTypeBuilder<Person> builder)
{
builder.Property(p => p.Id).ValueGeneratedOnAdd();
builder.OwnsOne(p => p.Details, b =>
{
b.HasMany(p => p.Addresses).WithOne().OnDelete(DeleteBehavior.Cascade);
b.HasMany(p => p.Contacts).WithOne().OnDelete(DeleteBehavior.Cascade);
});
}
}
public class AddressTypeConfiguration : IEntityTypeConfiguration<Address>
{
public void Configure(EntityTypeBuilder<Address> builder)
{
builder.Property<string>("Id").ValueGeneratedOnAdd();
}
}
public class ContactTypeConfiguration : IEntityTypeConfiguration<Contact>
{
public void Configure(EntityTypeBuilder<Contact> builder)
{
builder.Property<int>("Id").ValueGeneratedOnAdd();
}
}
В этой конфигурации выдается следующая ошибка:
'Отношение' Адрес 'к'PersonDetails.Addresses 'не поддерживается, потому что принадлежащий тип сущности' PersonDetails 'не может быть на главной стороне отношения, не связанного с владением.'
Поддерживается ли это отображение в ядре EF?Я не смог найти это в документации, но, возможно, я пропустил это.
Если это не поддерживается, кто-нибудь знает, есть ли планы поддержать его?
Полный образец можно найти здесь https://github.com/RossJayJones/entity-framework-core-samples