Skip to content

markdown-sect/ef-core

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

4 Commits
Β 
Β 

Repository files navigation

Как Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Π² 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 воспринимаСт Π½Π°ΡΡ‚Ρ€ΠΎΠ΅Π½Π½ΡƒΡŽ связь ΠΌΠ΅ΠΆΠ΄Ρƒ сущностями

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published