При определении отношения «многие ко многим» 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
значение не может быть нулевым .