Π‘ΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΠΈ ΠΈΠ·Π±ΠΎΡ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠΈ Π·Π° ΠΌΠΈΠ³ΡΠ°ΡΠΈΡ Π½Π° Π΄Π°Π½Π½ΠΈ
ΠΠΎΠ΄Π΅Π»ΡΡ Π½Π° Π΄Π°Π½Π½ΠΈΡΠ΅ ΠΈΠΌΠ° ΡΠ΅Π½Π΄Π΅Π½ΡΠΈΡ Π΄Π° ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½Ρ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠ° Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΈ Π² Π΄Π°Π΄Π΅Π½ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΏΡΠ΅ΡΡΠ°Π²Π° Π΄Π° ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²Π° Π½Π° Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ. Π Π°Π·Π±ΠΈΡΠ° ΡΠ΅, Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΈΠ·ΡΡΠΈΡΠ° ΠΈ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° 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
- DBup
- ΠΡΡΠ³Π»Π° ΠΊΡΡΠ°E
- 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, PstgreSQL, MySQL)
- Π’ΡΠΉ ΠΊΠ°ΡΠΎ ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ΡΠ΅ ΡΠ° Π½Π°ΠΏΠΈΡΠ°Π½ΠΈ Π½Π° T-SQL, ΡΠ΅ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π°Ρ Π΄ΠΎΡΡΠ° ΠΏΡΠΎΡΡΠΈ.
- ΠΠΎΠ½ΡΠ»ΠΈΠΊΡΠΈΡΠ΅ ΡΡΡΠΎ ΡΠ΅ ΡΠ°Π·ΡΠ΅ΡΠ°Π²Π°Ρ ΡΡΡ SQL
Π ΠΌΠΈΠ½ΡΡΠΈΡΠ΅:
- Π‘ ΡΡΠ»ΠΎΡΠΎ ΡΠ°Π·Π½ΠΎΠΎΠ±ΡΠ°Π·ΠΈΠ΅ ΠΎΡ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Π½ΠΈ Π‘Π£ΠΠ, Oracle Π½Π΅ Π΅ Π΅Π΄Π½Π° ΠΎΡ ΡΡΡ
- ΠΠ΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²Π° Ρ ORM
- ΠΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ Π² T-SQL Ρ βΡΡΠΊΠΎΡ Π²Π°ΡΠΊΠΈβ Π½Π΅ Π΅ ΡΠΎΠ²Π°, ΠΊΡΠΌ ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ ΡΡΡΠ΅ΠΌΠΈΡ ΠΌΠ΅
- ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡΠ° ΠΈ ΠΎΠ±ΡΠ½ΠΎΡΡΡΠ° ΡΠ° ΡΠ°ΠΊΠ°-ΡΠ°ΠΊΠ°, Π²ΡΠΏΡΠ΅ΠΊΠΈ ΡΠ΅ ΠΏΠΎ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΏΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° SQL ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π΅ ΡΠ° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈ.
ΠΡΡΠ³Π»Π° ΠΊΡΡΠ°E
Π’ΠΎΠ·ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΌΠΈΠ³ΡΠ°ΡΠΈΡΡΠ°, ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½ΡΠ²Π°Π½ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·Π° 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 ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠ΅
- ΠΡΠΌΠ° db ΠΌΠΎΠΌΠ΅Π½ΡΠ½ΠΈ ΡΠ½ΠΈΠΌΠΊΠΈ
ΠΠ°ΠΊΡΠ² Π±Π΅ΡΠ΅ Π½Π°ΡΠΈΡΡ ΠΈΠ·Π±ΠΎΡ?
ΠΠ°ΠΉ-Π³ΠΎΡΠ΅ΡΠΈΡΡ Π΄Π΅Π±Π°Ρ ΡΠ΅ Π²ΡΡΡΠ΅ΡΠ΅ ΠΎΠΊΠΎΠ»ΠΎ Π΄Π²Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΠ° - Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ ΠΈ ΡΠ°Π·ΡΠΌΠ½ΠΎ ΡΠ°Π·ΡΠ΅ΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΈ. ΠΡΡΠ³ΠΈ ΡΠ°ΠΊΡΠΎΡΠΈ ΠΏΠ»Π°ΡΠ΅Ρ
Π° ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ. Π ΡΠ΅Π·ΡΠ»ΡΠ°Ρ Π½Π° ΡΠΎΠ²Π°, Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈΡΠ΅ ΠΎΡ Π΄ΠΈΡΠΊΡΡΠΈΡΡΠ°, Π΅ΠΊΠΈΠΏΡΡ ΡΠ΅ΡΠΈ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Fluent Migrator Π² Π½ΠΎΠ²ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡ. ΠΠ° ΡΠ°Π·ΡΠ΅ΡΠ°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΈ Π² Π±ΡΠ΄Π΅ΡΠ΅ ΡΠ΅ Π΄ΠΎΠ½Π΅ΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-Π³ΠΎΠ»ΡΠΌ Π±ΡΠΎΠΉ ΠΏΠ»ΡΡΠΎΠ²Π΅.
ΠΠ°Π½Π½ΠΈ
Π Π°Π·Π±ΠΈΡΠ° ΡΠ΅, Π½ΡΠΌΠ° ΠΈΠ΄Π΅Π°Π»Π½ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ. Π’Π°ΠΊΠ° ΡΠ΅ ΡΡΡΠ±Π²Π°ΡΠ΅ Π΄Π° Π΄Π°Π΄Π΅ΠΌ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ Π½Π° Π½Π°ΡΠΈΡ βΡΠΏΠΈΡΡΠΊ Ρ ΠΆΠ΅Π»Π°Π½ΠΈΡβ, Π·Π° Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ ΠΈΠ·Π±ΠΎΡ. ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π°, Π·Π° Π΄ΡΡΠ³ΠΈ Π΅ΠΊΠΈΠΏΠΈ ΠΈ Π΄ΡΡΠ³ΠΈ Π·Π°Π΄Π°ΡΠΈ Π΄ΡΡΠ³ΠΈ ΡΠ°ΠΊΡΠΎΡΠΈ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΡΠ΅ΡΠ°Π²Π°ΡΠΈ. ΠΠ°Π΄ΡΠ²Π°ΠΌΠ΅ ΡΠ΅, ΡΠ΅ ΡΠ°Π·ΠΈ ΡΡΠ°ΡΠΈΡ ΡΠ΅ Π²ΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π΅ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΡΠ²ΠΎΡ ΠΈΠ·Π±ΠΎΡ.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: www.habr.com