Принадлежащие сущности со связями коллекции, использующие ядро ​​платформы - PullRequest
0 голосов
/ 12 февраля 2019

Я пытаюсь смоделировать следующую структуру класса, где 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

1 Ответ

0 голосов
/ 09 августа 2019

Это не поддерживается дизайном.Принадлежащие типы являются частью совокупности, и на внешние ссылки можно ссылаться только на совокупный корень.

Вы можете иметь те же классы и использовать разбиение таблицы, но не настраивайте PersonDetails как принадлежащие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...