Skip to content

Latest commit

 

History

History
20 lines (17 loc) · 2.04 KB

README.md

File metadata and controls

20 lines (17 loc) · 2.04 KB

Как работают коллекции в EF Core?

EF Core не воспринимает коллекции (в т.ч. листы) как мы привыкли, для него коллекции - это:

  1. Набор данных (в виде строк), которые просто сериализуются/десериализуются, причём эта ериализация должна быть вручную прописана
  2. Набор связанных сущностей (тут стоит немного подробнее расписать, попробю объяснить на куске кода):
        builder
          .HasMany(employee => employee.Subordinates)
          .WithOne()
          .HasForeignKey(employee => employee.ChiefId)
          .OnDelete(DeleteBehavior.SetNull);

В данном случае мы настроили one-to-many связь между employee.Subordinates и employee.ChiefId, но как именно это будет работать?

Как я уже сказал, EF Core не воспринимает лист как мы привыкли, и если мы попытаемся добавить в Subordinates что-либо, эффекта никакого не будет (разве что выкинется ошибка).

Это связано с тем, что EF Core буквально понимает написанный код следующим образом:

  • Каждый сотрудник имеет свой уникальный Id, у каждого сотрудника есть аттрибут ChiefId, который связывает сотрудника с его шефом
  • Тогда лист Subordinates - это то, куда надо засовывать все сущности, у которых ChiefId == Id нашего сотрудника

Именно так EF Core воспринимает настроенную связь между сущностями