Можно ли скрыть коллекцию, которая определяет отношения? - PullRequest
0 голосов
/ 03 января 2019

При определении отношения «многие ко многим» EF Core обязывает использовать класс соединения.Я пытаюсь скрыть этот класс соединения.

В моем сценарии Person (сущность 1) играет много видов спорта (сущность 2), поэтому существует таблица PersonSport (сущность 3).

ИспользованиеEntity Framework Core Я могу сделать что-то вроде этого:

modelBuilder.Entity<Person>()
                .ToTable("Person")
            .Property(p => p.Surname)
            .HasField("_surname");

Класс выглядит примерно так:

private readonly string _surname;
public string Surname
{
    get
        {
            return _surname;
        }
}

EF Core правильно создаст поле базы данных для: Person.Surname.Скажем, таблица «Персона» имеет отношение к спорту, т. Е. Человек участвует во многих видах спорта.Поэтому существует соединительная таблица с именем: PersonSport.Можно ли это сделать:

1) Добавить коллекцию только для чтения в таблицу Person:

private readonly List<PersonSport> _personSport;

2) Настройте объединение следующим образом (в контексте):

modelBuilder.Entity<PersonSport>()
.HasOne<Person>(ps => ps.Person)
.WithMany("_personSport")
.HasForeignKey(sc => sc.PersonId)
.OnDelete(DeleteBehavior.Cascade);

Я пытаюсь скрыть список PersonSport.Вместо этого пользователь класса будет использовать следующее:

public IReadOnlyCollection<Sport> sports => _personSport.Select(ps=> ps.Sport).ToList().AsReadOnly();

Возможно ли это?Когда я запускаю: Add-Migration InitialCreate; the error is значение не может быть нулевым .

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