Π‘ΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΠΈ ΠΈΠ·Π±ΠΎΡ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠΈ Π·Π° ΠΌΠΈΠ³ΡΠ°ΡΠΈΡ Π½Π° Π΄Π°Π½Π½ΠΈ

ΠΠΎΠ΄Π΅Π»ΠΈΡΠ΅ Π½Π° Π΄Π°Π½Π½ΠΈ Π² ΠΏΡΠΎΡΠ΅ΡΠ° Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΈΠΌΠ°Ρ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎΡΠΎ Π΄Π° ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΡΡ, ΠΈ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ ΠΌΠΎΠΌΠ΅Π½Ρ ΡΠΏΠΈΡΠ°Ρ Π΄Π° ΠΎΡΠ³ΠΎΠ²Π°ΡΡΡ Π½Π° Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ. Π Π°Π·Π±ΠΈΡΠ° ΡΠ΅, Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΈΠ·ΡΡΠΈΡΠ°, ΠΈ ΡΠΎΠ³Π°Π²Π° ORM ΡΠ΅ ΡΡΠ·Π΄Π°Π΄Π΅ Π½ΠΎΠ²Π° Π²Π΅ΡΡΠΈΡ, ΠΊΠΎΡΡΠΎ ΡΠ΅ ΠΎΡΠ³ΠΎΠ²Π°ΡΡ Π½Π° ΠΌΠΎΠ΄Π΅Π»Π°, Π½ΠΎ ΡΠ°ΠΊΠ°Π²Π° ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° ΡΠ΅ Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ Π·Π°Π³ΡΠ±Π° Π½Π° ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈ. ΠΠΎ ΡΠΎΠ·ΠΈ Π½Π°ΡΠΈΠ½, ΡΡΠ½ΠΊΡΠΈΡΡΠ° Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Π·Π° ΠΌΠΈΠ³ΡΠ°ΡΠΈΡ Π΅ Π΄Π° ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·ΠΈΡΠ° ΡΡ
Π΅ΠΌΠ°ΡΠ° Ρ ΠΌΠΎΠ΄Π΅Π»Π° Π½Π° Π΄Π°Π½Π½ΠΈ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π±Π΅Π· Π·Π°Π³ΡΠ±Π° Π½Π° ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈ.
Π ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° ΡΠ°Π·ΠΈ ΡΡΠ°ΡΠΈΡ Π±ΠΈΡ
ΠΌΠ΅ ΠΈΡΠΊΠ°Π»ΠΈ Π΄Π° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈΡΠ΅ Π½Π° Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ. ΠΠ°Π΄ΡΠ²Π°ΠΌΠ΅ ΡΠ΅, ΡΠ΅ ΡΠΎΠ·ΠΈ ΠΎΠ±Π·ΠΎΡ ΡΠ΅ Π±ΡΠ΄Π΅ ΠΏΠΎΠ»Π΅Π·Π΅Π½ Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅, ΠΈΠ·ΠΏΡΠ°Π²Π΅Π½ΠΈ ΠΏΡΠ΅Π΄ ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ ΠΈΠ·Π±ΠΎΡ.
ΠΠ°Π΄Π°ΡΠ°
Π Π½Π°ΡΠ°ΡΠ° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ Π² ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΡΠ΅ΡΠ΅ Π°ΠΊΡΠΈΠ²Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΡΠ»Π΅Π΄Π²Π°ΡΠΎΡΠΎ ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ΄ΡΠΊΡ β Docs Security Suite (DSS). Π‘ΡΡΠ²ΡΡΠ½Π°ΡΠ° ΡΠ°ΡΡ Π΅ Π½Π°ΠΏΠΈΡΠ°Π½Π° Π½Π° .Net Core, ΠΈ ΠΊΠ°ΡΠΎ Π‘Π£ΠΠ ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Entity Framework Core. ΠΡΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ Code First.
ΠΠΎΠΌΠ΅Π½Π½Π°ΡΠ° ΠΌΠΎΠ΄Π΅Π» Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΡΠ΅ ΡΡΠ·Π΄Π°Π²Π° ΠΎΡ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ Π΅Π΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ β Π²ΡΠ΅ΠΊΠΈ ΠΎΡ ΠΊΠΎΠΈΡΠΎ ΠΎΡΠ³ΠΎΠ²Π°ΡΡ Π·Π° ΡΠ²ΠΎΡΡΠ° Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠ° ΡΠ°ΡΡ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ°.
Π ΠΏΡΠ΅Π΄Ρ ΠΎΠ΄Π½ΠΎΡΠΎ ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΠ΅ DSS ΠΊΠ°ΡΠΎ ΡΠΈΡΡΠ΅ΠΌΠ° Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈΡΠ΅ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΠΊΠ»Π°ΡΠΈΡΠ΅ΡΠΊΠΈΡ Entity Framework Migrations (EF 6). ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π°, ΠΊΡΠΌ Π½Π΅Π³ΠΎ ΡΠ΅ Π½Π°ΡΡΡΠΏΠ°Ρ Π° Π½ΡΠΊΠΎΠΈ ΠΎΠΏΠ»Π°ΠΊΠ²Π°Π½ΠΈΡ, Π³Π»Π°Π²Π½ΠΎΡΠΎ ΠΎΡ ΠΊΠΎΠΈΡΠΎ Π±Π΅, ΡΠ΅ Π² EF Π»ΠΈΠΏΡΠ²Π° Π°Π΄Π΅ΠΊΠ²Π°ΡΠ΅Π½ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ Π·Π° ΡΠ°Π·ΡΠ΅ΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΈ Π½Π° Π²Π΅ΡΡΠΈΠΈ. Π’ΠΎΠ·ΠΈ ΡΠ°ΠΊΡ Π²ΡΠ΅ ΠΎΡΠ΅ Π½ΠΈ ΡΠ°Π·ΠΎΡΠ°ΡΠΎΠ²Π° ΠΏΡΠΈ ΠΏΠΎΠΏΡΠ°Π²ΡΠ½Π΅ΡΠΎ Π½Π° Π±ΡΠ³ΠΎΠ²Π΅ Π² ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ°, Π·Π°ΡΠΎΠ²Π° Π±Π΅ΡΠ΅ Π²Π·Π΅ΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΄Π° ΡΠ΅ ΡΠ°Π·Π³Π»Π΅Π΄Π°Ρ Π°Π»ΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΠΈ Π²Π°ΡΠΈΠ°Π½ΡΠΈ.
Π ΡΠ΅Π·ΡΠ»ΡΠ°Ρ Π½Π° Π΄ΠΈΡΠΊΡΡΠΈΡΡΠ° ΡΠ΅ ΠΎΡΠΎΡΠΌΠΈΡ Π° ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ ΠΈΠ·ΠΈΡΠΊΠ²Π°Π½ΠΈΡ ΠΊΡΠΌ ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈΡΠ΅:
- ΠΠΎΠ΄ΠΊΡΠ΅ΠΏΠ° Π·Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π‘Π£ΠΠ. ΠΠ°Π΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π½ΠΎ MS SQL Server, PostgreSQL, Oracle, Π½ΠΎ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»Π½ΠΎ Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΈ Π΄ΡΡΠ³ΠΈ.
- Π Π°Π±ΠΎΡΠ° Ρ ORM. ΠΡΡΠ²ΠΎΠ½Π°ΡΠ°Π»Π½ΠΎ Π±Π΅ΡΠ΅ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄Π΅Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° EF Core, Π½ΠΎ Π½Π° Π΅ΡΠ°ΠΏΠ° Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠ°Π½Π΅ Π±ΡΡ ΠΌΠ΅ Π³ΠΎΡΠΎΠ²ΠΈ Π΄Π° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΈ Π΄ΡΡΠ³ΠΈ ORM.
- ΠΠ²ΡΠΎΠ³Π΅Π½Π΅ΡΠ°ΡΠΈΡ Π½Π° ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ. Π‘ ΠΎΠ³Π»Π΅Π΄ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Code First, Π±ΠΈ Π±ΠΈΠ»ΠΎ Π΄ΠΎΠ±ΡΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·Π±Π΅Π³Π½Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡΠ° βΠ΄Π° ΠΏΠΈΡΠ΅ΠΌ ΡΡΡΠ½ΠΎβ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ.
- ΠΠΎΠ½ΡΠ»ΠΈΠΊΡΠΈ Π½Π° Π²Π΅ΡΡΠΈΠΈ. Π ΡΡΠ»ΠΎΠ²ΠΈΡΡΠ° Π½Π° ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΏΡΠΈ ΠΌΠ΅ΡΠ΄ΠΆΠΈΠ½Π³ΠΈ EF Core ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΏΡΠΎΠ²Π°Π»ΠΈ ΠΏΠΎΡΠ°Π΄ΠΈ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΈ. Π’ΠΎΠ²Π° ΡΡΠ°Π²Π° ΡΡΡΠ΅ΡΡΠ²Π΅Π½ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΠ°ΡΡΠΈ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΡΠ΅ ΡΡΠ·Π΄Π°Π²Π°Ρ ΠΎΡ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ, Π·Π°ΡΠΎΠ²Π° ΡΠ΅ Π½Π°Π»Π°Π³Π° Π΄Π° ΡΠ΅ Π³ΡΠ±ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅ Π·Π° Π²ΡΠ΅ΠΊΠΈ.
- Π Π°Π·Π²ΠΈΡΠ° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΈ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°. Π’ΡΠΊ, ΡΠΌΡΡΠ°ΠΌΠ΅, ΡΠ΅ ΠΏΠΎΡΡΠ½Π΅Π½ΠΈΡ Π½Π΅ ΡΠ° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈ.
- ΠΠ΅Π·ΠΏΠ»Π°ΡΠ½ΠΎΡΡ. ΠΡΠΈΡΠ΅ΡΠΈΡΡ Π΅ ΡΡΠ»ΠΎΠ²Π΅Π½, ΡΡΠΉ ΠΊΠ°ΡΠΎ Π³ΠΎΡΠΎΠ²ΠΈ ΡΠΌΠ΅ Π΄Π° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΈ Π½Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠΊΡΠΏΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ, ΠΈΠ»ΠΈ ΡΠΊΡΠΏΠΈ, Π½ΠΎ ΠΈΠ΄Π΅Π°Π»Π½ΠΈ ΠΏΠΎ ΡΠ΄ΠΎΠ±ΡΡΠ²ΠΎ.
Π ΡΠ΅Π·ΡΠ»ΡΠ°Ρ Π½Π° ΠΌΠ°Π»ΠΊΠΎ ΠΏΡΠΎΡΡΠ²Π°Π½Π΅ Π±ΡΡ Π° Π½Π°ΠΌΠ΅ΡΠ΅Π½ΠΈ ΠΈ ΠΏΡΠΈΠ·Π½Π°ΡΠΈ Π·Π° ΠΆΠ΅Π»Π°ΡΠ΅Π»Π½ΠΈ Π·Π° ΡΠ°Π·Π³Π»Π΅ΠΆΠ΄Π°Π½Π΅ ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΠΈ:
- EF Core Migrations
- DBup
- RoundhousE
- ThinkingHome.Migrator
- Fluent Migrator
Π ΡΠ΅Π³Π° ΠΌΠ°Π»ΠΊΠΎ ΠΏΠΎ-ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ

ΠΡΡΠ΅ΡΡΠ²Π΅Π½ΠΎ, ΡΠΎΠ²Π° Π±Π΅ΡΠ΅ ΠΏΡΡΠ²ΠΈΡΡ ΠΈ ΠΎΡΠ½ΠΎΠ²Π΅Π½ Π²Π°ΡΠΈΠ°Π½Ρ Π·Π° ΠΈΠ·Π±ΠΎΡ. ΠΠ°ΡΠΈΠ²Π΅Π½ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, ΡΠ°Π±ΠΎΡΠ΅Ρ ΠΎΡ ΠΊΡΡΠΈΡΡΠ° Π±Π΅Π· Π½ΠΈΠΊΠ°ΠΊΠ²ΠΈ ΡΡΠ»ΠΎΠΆΠ½Π΅Π½ΠΈΡ. ΠΠ³ΡΠΎΠΌΠ½ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ, ΠΎΡΠΈΡΠΈΠ°Π»Π½Π° ΠΈ Π½Π΅ ΡΠΎΠ»ΠΊΠΎΠ²Π°, ΠΏΡΠΎΡΡΠΎΡΠ° ΠΈ Ρ.Π½. ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π°, ΠΎΠΏΠ»Π°ΠΊΠ²Π°Π½ΠΈΡΡΠ°, ΠΎΡΠΏΡΠ°Π²Π΅Π½ΠΈ ΠΊΡΠΌ ΠΊΠ»Π°ΡΠΈΡΠ΅ΡΠΊΠΈΡ EF, ΡΠ° Π½Π°ΠΏΡΠ»Π½ΠΎ Π°ΠΊΡΡΠ°Π»Π½ΠΈ ΠΈ Π·Π° EF Core.
Π’Π°ΠΊΠ° ΡΠ΅ Π·Π° EF Core ΡΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ ΠΏΠ»ΡΡΠΎΠ²Π΅:
- ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° ΠΎΡ Microsoft, Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ Π½Π° Π±ΡΠ»Π³Π°ΡΡΠΊΠΈ, ΠΎΠ³ΡΠΎΠΌΠ½ΠΎ ΠΊΠΎΠΌΡΠ½ΠΈΡΡΠΈ.
- ΠΠ²ΡΠΎΠ³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ Π½Π° ΠΎΡΠ½ΠΎΠ²Π°ΡΠ° Π½Π° CodeFirst.
- Π ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Ρ EF 6, Π² EF Core Π²Π΅ΡΠ΅ Π½Π΅ ΡΠ΅ ΡΡΡ ΡΠ°Π½ΡΠ²Π° ΠΌΠΎΠΌΠ΅Π½ΡΠ½Π° ΡΠ½ΠΈΠΌΠΊΠ° Π½Π° ΠΠ. ΠΡΠΈ ΡΠ°Π±ΠΎΡΠ° Ρ EF Core Π² Code First Π½Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΡΠ΅ ΡΠ°Π·Π²ΠΈΠ²Π° Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ.
- Π’ΡΠΉ ΠΊΠ°ΡΠΎ Π·Π°ΠΏΠΎΡΠ²Π°ΠΌΠ΅ Ρ Code First, ΠΈΠΌΠ° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π΄Π° ΡΠ΅ Π²ΠΎΠ΄ΠΈ Π΅Π΄Π½Π° ΠΌΠΈΠ³ΡΠ°ΡΠΈΡ Π·Π° Π²ΡΠΈΡΠΊΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈ Π΄ΠΎΡΡΠ°Π²ΡΠΈΡΠΈ Π½Π° Π΄Π°Π½Π½ΠΈ.
- Π§ΡΠΎ ΡΠ΅ ΠΎΡΠ½Π°ΡΡ Π΄ΠΎ Π΄ΠΎΡΡΠ°Π²ΡΠΈΡΠΈΡΠ΅, ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Ρ ΡΠ΅ ΠΈ PostgreSQL, ΠΈ Oracle ΠΈ Ρ.Π½., Π΄ΠΎΡΠΈ ΠΈ MS SQL Server π.
Π ΡΡΡΠΎ ΠΈ ΠΌΠΈΠ½ΡΡΠΈ:
- Π Π°Π·ΡΠ΅ΡΠ°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΈ ΠΎΡΡΠ°Π½Π° Π½Π° ΡΡΡΠΎΡΠΎ Π½ΠΈΠ²ΠΎ. ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΅ Π΄Π° ΡΠ΅ ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΡ ΠΎΡ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ ΠΈ Π΄Π° ΡΠ΅ ΠΎΠ±Π½ΠΎΠ²ΡΠ²Π°Ρ ΠΌΠΎΠΌΠ΅Π½ΡΠ½ΠΈΡΠ΅ ΡΠ½ΠΈΠΌΠΊΠΈ Π½Π° ΠΠ.
- ΠΠ°Π²ΠΈΡΠΈΠΌΠΎΡΡ ΠΎΡ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠ΅, Π½Π° ΠΎΡΠ½ΠΎΠ²Π°ΡΠ° Π½Π° ΠΊΠΎΠΈΡΠΎ ΡΠ° ΡΠ³Π΅Π½Π΅ΡΠΈΡΠ°Π½ΠΈ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈΡΠ΅.
DbUp

DbUp Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π½Π° .NET, ΠΊΠΎΡΡΠΎ ΡΠ΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ° ΡΡΠ΅Π· NuGet ΠΈ ΠΏΠΎΠΌΠ°Π³Π° Π·Π° ΠΏΡΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ Π² SQL Server. Π’Ρ ΡΠ»Π΅Π΄ΠΈ ΠΊΠΎΠΈ ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ Π·Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π²Π΅ΡΠ΅ ΡΠ° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈ ΠΈ ΡΡΠ°ΡΡΠΈΡΠ° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈΡΠ΅ Π·Π° ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΠ. ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° ΠΏΡΠΎΠΈΠ·Π»ΠΈΠ·Π° ΠΎΡ ΠΏΡΠΎΠ΅ΠΊΡ Π·Π° ΠΎΠΏΠ΅Π½ΡΠΎΡΡ Π±Π»ΠΎΠ³ Π½Π° ASP.NET ΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π° ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΡ MIT, Π° ΠΊΠΎΠ΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ Π½Π°ΠΌΠ΅ΡΠ΅Π½ Π½Π° GitHub. ΠΠΈΠ³ΡΠ°ΡΠΈΠΈΡΠ΅ ΡΠ΅ ΠΎΠΏΠΈΡΠ²Π°Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° T-SQL.
ΠΠ°ΠΊΠ²ΠΈ ΡΠ° ΠΏΠ»ΡΡΠΎΠ²Π΅ΡΠ΅:
- ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π‘Π£ΠΠ (MS SQL Server, PostgreSQL, MySQL).
- Π’ΡΠΉ ΠΊΠ°ΡΠΎ ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ΡΠ΅ ΡΠ΅ ΠΏΠΈΡΠ°Ρ Π½Π° T-SQL, ΡΠ΅ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π°Ρ Π΄ΠΎΡΡΠ° ΠΏΡΠΎΡΡΠΈ.
- ΠΠΎΠ½ΡΠ»ΠΈΠΊΡΠΈΡΠ΅ ΡΡΡΠΎ ΡΠ΅ ΡΠ°Π·ΡΠ΅ΡΠ°Π²Π°Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° SQL.
Π ΠΌΠΈΠ½ΡΡΠΈΡΠ΅:
- ΠΡΠΈ Π²ΡΠΈΡΠΊΠΈΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Π½ΠΈ Π‘Π£ΠΠ, Oracle Π½Π΅ ΠΏΠΎΠΏΠ°Π΄Π° Π² ΡΠ΅Ρ Π½ΠΈΡ Π±ΡΠΎΠΉ.
- ΠΠ΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²Π° Ρ ORM.
- ΠΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ Π½Π° T-SQL ΡΡΡΠ½ΠΎ Π½Π΅ Π΅ ΡΠΎΠ²Π°, ΠΊΡΠΌ ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ ΡΡΡΠ΅ΠΌΠΈΠΌ.
- ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡΠ° ΠΈ ΠΎΠ±ΡΠ½ΠΎΡΡΡΠ° Π½Π΅ ΡΠ° Π½Π° Π²ΠΈΡΠΎΠΊΠΎ Π½ΠΈΠ²ΠΎ, Π²ΡΠΏΡΠ΅ΠΊΠΈ ΡΠ΅ ΠΏΡΠΈ Π½Π°ΠΏΠΈΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° SQL ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ ΠΌΠΎΠΆΠ΅ Π±ΠΈ Π½Π΅ ΡΠ° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈ.
RoundhousE

Π’ΠΎΠ·ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ, ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½ΡΠ²Π°Π½ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΡ Apache 2.0, ΠΊΠ°ΠΊΡΠΎ ΠΈ ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΈΡΡ, ΡΠ°Π±ΠΎΡΠΈ Π½Π° T-SQL ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ. ΠΠ·Π³Π»Π΅ΠΆΠ΄Π°, ΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ ΡΠ° ΠΏΠΎΡΡΠ°Π²ΠΈΠ»ΠΈ Π°ΠΊΡΠ΅Π½Ρ Π²ΡΡΡ Ρ ΡΠ΅ΡΠ°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ, ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π½Π° Π‘Π£ΠΠ, Π° Π½Π΅ Π²ΡΡΡ Ρ ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ΄ΠΎΠ±Π΅Π½ ΠΏΡΠΎΡΠ΅Ρ Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°.
ΠΠ»ΡΡΠΎΠ²Π΅:
- ΠΠΎΠ΄Π΄ΡΡΠΆΠ° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈΡΠ΅ Π‘Π£ΠΠ (Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ Oracle)
ΠΠ΅Π΄ΠΎΡΡΠ°ΡΡΡΠΈ:
- Oracle (ΠΊΠ°ΠΊΡΠΎ ΠΈ Π½Π΅Π°ΠΊΡΡΠ°Π»Π½ΠΈΡΡ Π·Π° Π½Π°Ρ Access) Π½Π΅ ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° Π½Π° .NET Core, ΡΠ°ΠΌΠΎ Π½Π° .NET Full Framework
- ΠΠ΅ ΡΠ°Π±ΠΎΡΠΈ Ρ ORM
- ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡΠ° Π΅ Π΄ΠΎΡΠΈ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΠΎΡ ΡΠ°Π·ΠΈ Π½Π° ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΈΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ
- ΠΡΠ½ΠΎΠ²ΠΎ β ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈΡΠ΅ ΡΠ΅ ΠΏΠΈΡΠ°Ρ ΡΡΡ ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅
ThinkingHome.Migrator
![]()
ΠΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π·Π° Π²Π΅ΡΡΠΈΠΈΡΠ°Π½Π΅ Π½Π° ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ Π½Π° ΡΡ
Π΅ΠΌΠ°ΡΠ° Π½Π° Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ ΠΏΠΎΠ΄ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° .NET Core, ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½ΡΠ²Π°Π½ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΡ MIT. .
ΠΠ»ΡΡΠΎΠ²Π΅:
- Π‘ΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ Π·Π° .NET Core
- Π Π΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° Π΅ ΡΠ°Π·ΠΊΠ»ΠΎΠ½Π΅Π½Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΡ ΠΎΡ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ
- Π Π΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΎ Π΅ Π»ΠΎΠ³ΠΈΡΠ°Π½Π΅ Π½Π° ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ
ΠΠ΅Π΄ΠΎΡΡΠ°ΡΡΡΠΈ:
- ΠΠΎΡΠ»Π΅Π΄Π½ΠΎΡΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ β ΠΏΡΠ΅Π΄ΠΈ Π³ΠΎΠ΄ΠΈΠ½Π°. ΠΠ·Π³Π»Π΅ΠΆΠ΄Π° ΠΏΡΠΎΠ΅ΠΊΡΡΡ Π½Π΅ ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°
- ΠΠ΅ ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° Oracle (Π² ΡΡΠ°ΡΠΈΡΡΠ° Π΅ ΠΏΠΎΡΠΎΡΠ΅Π½ΠΎ, ΡΠ΅ Π΅ Π·Π°ΡΠ°Π΄ΠΈ Π»ΠΈΠΏΡΠ°ΡΠ° Π½Π° ΡΡΠ°Π±ΠΈΠ»Π½Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΠΎΠ΄ .NET Core β Π½ΠΎ ΡΠΎΠ²Π° Π΅ Π±ΠΈΠ»ΠΎ ΠΏΡΠ΅Π΄ΠΈ Π³ΠΎΠ΄ΠΈΠ½Π°)
- ΠΠΈΠΏΡΠ²Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½Π° Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ Π½Π° ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ
ΠΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏ, ΠΏΡΠΎΠ΅ΠΊΡΡΡ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° ΠΎΠ±Π΅ΡΠ°Π²Π°Ρ, ΠΎΡΠΎΠ±Π΅Π½ΠΎ Π°ΠΊΠΎ Π±Π΅ΡΠ΅ ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠ°Π²Π°Π» Π΄Π° ΡΠ΅ ΡΠ°Π·Π²ΠΈΠ²Π°, Π½ΠΎ ΡΡΡΠ±Π²Π°ΡΠ΅ Π΄Π° Π²Π·Π΅ΠΌΠ΅ΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΡΠΊ ΠΈ ΡΠ΅Π³Π°.
Fluent Migrator

ΠΠ°ΠΉ-ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΈΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π·Π° ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ, ΠΈΠΌΠ°Ρ Π³ΠΎΠ»ΡΠΌΠ° Π°ΡΠΌΠΈΡ ΠΎΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΠΈ. Π Π°Π·ΠΏΡΠΎΡΡΡΠ°Π½ΡΠ²Π° ΡΠ΅ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΡ Apache 2.0. ΠΠ°ΠΊΡΠΎ Π΅ ΠΏΠΎΡΠΎΡΠ΅Π½ΠΎ Π² ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΡΠΎ, Π΅ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° Π·Π° ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ Π·Π° .NET, Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½Π° Π½Π° Ruby on Rails Migrations. ΠΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ Π² ΡΡ Π΅ΠΌΠ°ΡΠ° Π½Π° ΠΠ ΡΠ΅ ΠΎΠΏΠΈΡΠ²Π°Ρ Π² ΠΊΠ»Π°ΡΠΎΠ²Π΅ Π½Π° C#.
Π’ΡΠΊ ΠΈΠΌΠ° ΠΏΡΠ΅Π΄ΠΈΠΌΡΡΠ²Π°:
- ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈΡΠ΅ Π‘Π£ΠΠ
- ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° .NET Core
- ΠΠΎΠ»ΡΠΌΠΎ ΡΠ°Π·Π²ΠΈΡΠΎ ΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎ
- ΠΠΎΠ½ΡΠ»ΠΈΠΊΡΠΈΡΠ΅ Ρ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ ΡΠ΅ ΡΠ°Π·ΡΠ΅ΡΠ°Π²Π°Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ β Π·Π° ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈΡΠ΅ ΡΠ΅ ΠΏΠΎΡΠΎΡΠ²Π° ΡΠ΅Π΄Π° Π½Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅. ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π°, Π°ΠΊΠΎ Π²ΡΠ·Π½ΠΈΠΊΠ½Π΅ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡ ΠΎΠΊΠΎΠ»ΠΎ Π΅Π΄ΠΈΠ½ ΠΎΠ±Π΅ΠΊΡ, ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΏΡΠΈ ΠΎΠ±Π΅Π΄ΠΈΠ½ΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΊΠΎΠ΄Π° ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π° ΠΏΠΎ ΡΡΡΠΈΡ Π½Π°ΡΠΈΠ½, ΠΊΠ°ΠΊΡΠΎ ΠΈ Π² ΠΎΡΡΠ°Π½Π°Π»Π°ΡΠ° ΡΠ°ΡΡ ΠΎΡ ΠΊΠΎΠ΄Π°.
- ΠΠΌΠ° ΠΏΡΠΎΡΠΈΠ»ΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Ρ ΡΠ»Π΅Π΄ ΡΡΠΏΠ΅ΡΠ½ΠΎ Π·Π°Π²ΡΡΡΠ²Π°Π½Π΅ Π½Π° ΠΌΠΈΠ³ΡΠ°ΡΠΈΡΡΠ° ΠΈ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π½ΠΎΡΡΡ Π² ΡΠ΅Π±Π΅ ΡΠΈ ΡΠ΅ΡΠ²ΠΈΠ·Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΠΎΡΠ»Π΅Π΄Π½ΠΎΡΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π±Π΅ΡΠ΅ ΠΏΡΠ΅Π΄ΠΈ ΠΌΠ΅ΡΠ΅Ρ, ΡΠΎΠ΅ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΡΡ ΠΆΠΈΠ²Π΅Π΅.
Π©ΠΎ ΡΠ΅ ΠΎΡΠ½Π°ΡΡ Π΄ΠΎ Π½Π΅Π΄ΠΎΡΡΠ°ΡΡΡΠΈΡΠ΅, ΡΡΠΊ:
- ΠΠΈΠΏΡΠ²Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½Π° Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ Π½Π° ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ
- ΠΠΈΠΏΡΠ²Π° Π²ΡΡΠ·ΠΊΠ° Ρ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠ΅ Π½Π° EF
- ΠΡΠΌΠ° ΡΠ½ΠΈΠΌΠΊΠΈ Π½Π° ΠΠ
ΠΠ°ΠΊΡΠ² Π±Π΅ΡΠ΅ Π½Π°ΡΠΈΡΡ ΠΈΠ·Π±ΠΎΡ?

ΠΠ°ΠΉ-Π³ΠΎΠ»Π΅ΠΌΠΈΡΠ΅ ΡΠΏΠΎΡΠΎΠ²Π΅ ΡΠ΅ ΡΠ°Π·Π²ΠΈΡ
Π° ΠΎΠΊΠΎΠ»ΠΎ Π΄Π²Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΠ° β Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½Π° Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ Π½Π° ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ ΠΈ ΡΠ°Π·ΡΠΌΠ½ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΈ. ΠΡΡΠ°Π½Π°Π»ΠΈΡΠ΅ ΡΠ°ΠΊΡΠΎΡΠΈ ΠΏΠ»Π°ΡΠΈ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ. Π ΡΠ΅Π·ΡΠ»ΡΠ°Ρ Π½Π° ΠΎΠ±ΡΡΠΆΠ΄Π°Π½ΠΈΡΡΠ° Π΅ΠΊΠΈΠΏΡΡ ΡΠ΅ΡΠΈ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Fluent Migrator Π² Π½ΠΎΠ²ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡ. ΠΠ°ΡΠΎΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΈΡΠ΅ Π² Π΄ΡΠ»Π³ΠΎΡΡΠΎΡΠ΅Π½ ΠΏΠ»Π°Π½ ΡΠ΅ Π΄ΠΎΠ½Π΅ΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΏΠΎΠ»Π·ΠΈ.
ΠΠ·Π²ΠΎΠ΄ΠΈ
Π Π°Π·Π±ΠΈΡΠ° ΡΠ΅, ΠΈΠ΄Π΅Π°Π»Π½ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°Ρ. Π Π·Π° Π½Π°Ρ ΠΏΡΠΈ ΠΈΠ·Π±ΠΎΡΠ° ΡΠ΅ Π½Π°Π»ΠΎΠΆΠΈ Π΄Π° ΠΏΠΎΡΡΠ°Π²ΠΈΠΌ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠΈ Π² Π½Π°ΡΠΈΡΠ΅ "ΠΆΠ΅Π»Π°Π½ΠΈΡ". ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π°, Π·Π° Π΄ΡΡΠ³ΠΈ Π΅ΠΊΠΈΠΏΠΈ ΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π·Π°Π΄Π°ΡΠΈ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΠΎΠΊΠ°ΠΆΠ°Ρ ΡΠ΅ΡΠ°Π²Π°ΡΠΈ Π΄ΡΡΠ³ΠΈ ΡΠ°ΠΊΡΠΎΡΠΈ. ΠΠ°Π΄ΡΠ²Π°ΠΌΠ΅ ΡΠ΅ ΡΠ°Π·ΠΈ ΡΡΠ°ΡΠΈΡ Π΄Π° Π²ΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π΅ ΠΏΡΠΈ ΠΈΠ·Π±ΠΎΡΠ°.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: habr.com
