Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ ΠΈ ΠΈΠ·Π±ΠΎΡ€ Π½Π° систСми Π·Π° миграция Π½Π° Π΄Π°Π½Π½ΠΈ

Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ ΠΈ ΠΈΠ·Π±ΠΎΡ€ Π½Π° систСми Π·Π° миграция Π½Π° Π΄Π°Π½Π½ΠΈ

Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ ΠΈ ΠΈΠ·Π±ΠΎΡ€ Π½Π° систСми Π·Π° миграция Π½Π° Π΄Π°Π½Π½ΠΈ

ΠœΠΎΠ΄Π΅Π»ΠΈΡ‚Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ Π² процСса Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈΠΌΠ°Ρ‚ свойството Π΄Π° сС промСнят, ΠΈ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΠΌΠΎΠΌΠ΅Π½Ρ‚ спират Π΄Π° отговарят Π½Π° Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ. Π Π°Π·Π±ΠΈΡ€Π° сС, Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΠΈΠ·Ρ‚Ρ€ΠΈΡ‚Π°, ΠΈ Ρ‚ΠΎΠ³Π°Π²Π° ORM Ρ‰Π΅ създадС Π½ΠΎΠ²Π° вСрсия, която Ρ‰Π΅ отговаря Π½Π° ΠΌΠΎΠ΄Π΅Π»Π°, Π½ΠΎ Ρ‚Π°ΠΊΠ°Π²Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Ρ‰Π΅ Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ Π·Π°Π³ΡƒΠ±Π° Π½Π° ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰ΠΈΡ‚Π΅ Π΄Π°Π½Π½ΠΈ. По Ρ‚ΠΎΠ·ΠΈ Π½Π°Ρ‡ΠΈΠ½, функцията Π½Π° систСмата Π·Π° миграция Π΅ Π΄Π° синхронизира схСмата с ΠΌΠΎΠ΄Π΅Π»Π° Π½Π° Π΄Π°Π½Π½ΠΈ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π±Π΅Π· Π·Π°Π³ΡƒΠ±Π° Π½Π° ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰ΠΈΡ‚Π΅ Π΄Π°Π½Π½ΠΈ.

Π’ Ρ€Π°ΠΌΠΊΠΈΡ‚Π΅ Π½Π° Ρ‚Π°Π·ΠΈ статия Π±ΠΈΡ…ΠΌΠ΅ искали Π΄Π° Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ инструмСнти Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈΡ‚Π΅ Π½Π° Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ. НадявамС сС, Ρ‡Π΅ Ρ‚ΠΎΠ·ΠΈ ΠΎΠ±Π·ΠΎΡ€ Ρ‰Π΅ бъдС ΠΏΠΎΠ»Π΅Π·Π΅Π½ Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅, ΠΈΠ·ΠΏΡ€Π°Π²Π΅Π½ΠΈ ΠΏΡ€Π΅Π΄ ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ ΠΈΠ·Π±ΠΎΡ€.

Π—Π°Π΄Π°Ρ‡Π°

Π’ Π½Π°ΡˆΠ°Ρ‚Π° компания Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Ρ‚Π΅Ρ‡Π΅ Π°ΠΊΡ‚ΠΈΠ²Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° слСдващото ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ – Docs Security Suite (DSS). Π‘ΡŠΡ€Π²ΡŠΡ€Π½Π°Ρ‚Π° част Π΅ написана Π½Π° .Net Core, ΠΈ ΠΊΠ°Ρ‚ΠΎ Π‘Π£Π‘Π” ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΎ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Entity Framework Core. ΠŸΡ€ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Code First.

Π”ΠΎΠΌΠ΅Π½Π½Π°Ρ‚Π° ΠΌΠΎΠ΄Π΅Π» Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ сС създава ΠΎΡ‚ няколко Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ – всСки ΠΎΡ‚ ΠΊΠΎΠΈΡ‚ΠΎ отговаря Π·Π° своята логичСска част Π½Π° систСмата.

Π’ ΠΏΡ€Π΅Π΄Ρ…ΠΎΠ΄Π½ΠΎΡ‚ΠΎ ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΠ΅ DSS ΠΊΠ°Ρ‚ΠΎ систСма Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈΡ‚Π΅ сС използвашС класичСския Entity Framework Migrations (EF 6). Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‚ΠΎΠ²Π°, към Π½Π΅Π³ΠΎ сС Π½Π°Ρ‚Ρ€ΡƒΠΏΠ°Ρ…Π° някои оплаквания, Π³Π»Π°Π²Π½ΠΎΡ‚ΠΎ ΠΎΡ‚ ΠΊΠΎΠΈΡ‚ΠΎ Π±Π΅, Ρ‡Π΅ Π² EF липсва Π°Π΄Π΅ΠΊΠ²Π°Ρ‚Π΅Π½ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π·Π° Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π²Π°Π½Π΅ Π½Π° ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΈ Π½Π° вСрсии. Π’ΠΎΠ·ΠΈ Ρ„Π°ΠΊΡ‚ всС ΠΎΡ‰Π΅ Π½ΠΈ Ρ€Π°Π·ΠΎΡ‡Π°Ρ€ΠΎΠ²Π° ΠΏΡ€ΠΈ поправянСто Π½Π° бъговС Π² Ρ€Π°ΠΌΠΊΠΈΡ‚Π΅ Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°Ρ‚Π°, Π·Π°Ρ‚ΠΎΠ²Π° бСшС Π²Π·Π΅Ρ‚ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π΄Π° сС Ρ€Π°Π·Π³Π»Π΅Π΄Π°Ρ‚ Π°Π»Ρ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½ΠΈ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΈ.

Π’ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Π½Π° дискусията сС ΠΎΡ„ΠΎΡ€ΠΌΠΈΡ…Π° слСднитС изисквания към систСмата Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈΡ‚Π΅:

  1. ΠŸΠΎΠ΄ΠΊΡ€Π΅ΠΏΠ° Π·Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π‘Π£Π‘Π”. Π—Π°Π΄ΡŠΠ»ΠΆΠΈΡ‚Π΅Π»Π½ΠΎ MS SQL Server, PostgreSQL, Oracle, Π½ΠΎ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»Π½ΠΎ Π΅ възмоТно Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ.
  2. Π Π°Π±ΠΎΡ‚Π° с ORM. ΠŸΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½ΠΎ бСшС ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄Π΅Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° EF Core, Π½ΠΎ Π½Π° Π΅Ρ‚Π°ΠΏΠ° Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€Π°Π½Π΅ бяхмС Π³ΠΎΡ‚ΠΎΠ²ΠΈ Π΄Π° Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ ORM.
  3. АвтогСнСрация Π½Π° ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ. Π‘ ΠΎΠ³Π»Π΅Π΄ Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Code First, Π±ΠΈ Π±ΠΈΠ»ΠΎ Π΄ΠΎΠ±Ρ€Π΅ Π΄Π° сС ΠΈΠ·Π±Π΅Π³Π½Π΅ нСобходимостта β€žΠ΄Π° пишСм Ρ€ΡŠΡ‡Π½ΠΎβ€œ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ.
  4. ΠšΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΈ Π½Π° вСрсии. Π’ условията Π½Π° Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΡ€ΠΈ ΠΌΠ΅Ρ€Π΄ΠΆΠΈΠ½Π³ΠΈ EF Core ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΏΡ€ΠΎΠ²Π°Π»ΠΈ ΠΏΠΎΡ€Π°Π΄ΠΈ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΈ. Π’ΠΎΠ²Π° става ΡΡŠΡ‰Π΅ΡΡ‚Π²Π΅Π½ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ части Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ сС ΡΡŠΠ·Π΄Π°Π²Π°Ρ‚ ΠΎΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ, Π·Π°Ρ‚ΠΎΠ²Π° сС Π½Π°Π»Π°Π³Π° Π΄Π° сС Π³ΡƒΠ±ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π·Π° всСки.
  5. Π Π°Π·Π²ΠΈΡ‚Π° докумСнтация ΠΈ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°. Π’ΡƒΠΊ, смятамС, Ρ‡Π΅ пояснСния Π½Π΅ са Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈ.
  6. БСзплатност. ΠšΡ€ΠΈΡ‚Π΅Ρ€ΠΈΡΡ‚ Π΅ условСн, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Π³ΠΎΡ‚ΠΎΠ²ΠΈ смС Π΄Π° Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΈ Π½Π΅ ΠΌΠ½ΠΎΠ³ΠΎ скъпи систСми, ΠΈΠ»ΠΈ скъпи, Π½ΠΎ ΠΈΠ΄Π΅Π°Π»Π½ΠΈ ΠΏΠΎ удобство.

Π’ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Π½Π° ΠΌΠ°Π»ΠΊΠΎ ΠΏΡ€ΠΎΡƒΡ‡Π²Π°Π½Π΅ бяха Π½Π°ΠΌΠ΅Ρ€Π΅Π½ΠΈ ΠΈ ΠΏΡ€ΠΈΠ·Π½Π°Ρ‚ΠΈ Π·Π° ΠΆΠ΅Π»Π°Ρ‚Π΅Π»Π½ΠΈ Π·Π° Ρ€Π°Π·Π³Π»Π΅ΠΆΠ΄Π°Π½Π΅ слСднитС Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΈ:

  1. EF Core Migrations
  2. DBup
  3. RoundhousE
  4. ThinkingHome.Migrator
  5. Fluent Migrator

А сСга ΠΌΠ°Π»ΠΊΠΎ ΠΏΠΎ-ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ

Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ ΠΈ ΠΈΠ·Π±ΠΎΡ€ Π½Π° систСми Π·Π° миграция Π½Π° Π΄Π°Π½Π½ΠΈ
EntityFramework Core Migrations

ЕстСствСно, Ρ‚ΠΎΠ²Π° бСшС ΠΏΡŠΡ€Π²ΠΈΡΡ‚ ΠΈ основСн Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π·Π° ΠΈΠ·Π±ΠΎΡ€. НативСн инструмСнт, Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰ ΠΎΡ‚ кутията Π±Π΅Π· Π½ΠΈΠΊΠ°ΠΊΠ²ΠΈ услоТнСния. ΠžΠ³Ρ€ΠΎΠΌΠ½ΠΎ количСство докумСнтация, ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»Π½Π° ΠΈ Π½Π΅ Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π°, простота ΠΈ Ρ‚.Π½. Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‚ΠΎΠ²Π°, оплакванията, ΠΎΡ‚ΠΏΡ€Π°Π²Π΅Π½ΠΈ към класичСския EF, са напълно Π°ΠΊΡ‚ΡƒΠ°Π»Π½ΠΈ ΠΈ Π·Π° EF Core.

Π’Π°ΠΊΠ° Ρ‡Π΅ Π·Π° EF Core са ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ плюсовС:

  • ΠŸΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° ΠΎΡ‚ Microsoft, докумСнтация, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ Π½Π° Π±ΡŠΠ»Π³Π°Ρ€ΡΠΊΠΈ, ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎ ΠΊΠΎΠΌΡŽΠ½ΠΈΡΡ‚ΠΈ.
  • АвтогСнСриранС Π½Π° ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ Π½Π° основата Π½Π° CodeFirst.
  • Π’ сравнСниС с EF 6, Π² EF Core Π²Π΅Ρ‡Π΅ Π½Π΅ сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚Π½Π° снимка Π½Π° Π‘Π”. ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π° с EF Core Π² Code First Π½Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° сС Ρ€Π°Π·Π²ΠΈΠ²Π° Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ.
  • Въй ΠΊΠ°Ρ‚ΠΎ Π·Π°ΠΏΠΎΡ‡Π²Π°ΠΌΠ΅ с Code First, ΠΈΠΌΠ° Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π΄Π° сС Π²ΠΎΠ΄ΠΈ Π΅Π΄Π½Π° миграция Π·Π° всички Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈ доставчици Π½Π° Π΄Π°Π½Π½ΠΈ.
  • Π§Ρ‚ΠΎ сС отнася Π΄ΠΎ доставчицитС, ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‚ сС ΠΈ PostgreSQL, ΠΈ Oracle ΠΈ Ρ‚.Π½., Π΄ΠΎΡ€ΠΈ ΠΈ MS SQL Server 😊.

А ΡΡŠΡ‰ΠΎ ΠΈ минуси:

  • Π Π°Π·Ρ€Π΅ΡˆΠ°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΈ остана Π½Π° ΡΡŠΡ‰ΠΎΡ‚ΠΎ Π½ΠΈΠ²ΠΎ. НСобходимо Π΅ Π΄Π° сС ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π° послСдоватСлност ΠΎΡ‚ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ ΠΈ Π΄Π° сС обновяват ΠΌΠΎΠΌΠ΅Π½Ρ‚Π½ΠΈΡ‚Π΅ снимки Π½Π° Π‘Π”.
  • Зависимост ΠΎΡ‚ ΠΌΠΎΠ΄Π΅Π»ΠΈΡ‚Π΅, Π½Π° основата Π½Π° ΠΊΠΎΠΈΡ‚ΠΎ са сгСнСрирани ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈΡ‚Π΅.

DbUp

Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ ΠΈ ΠΈΠ·Π±ΠΎΡ€ Π½Π° систСми Π·Π° миграция Π½Π° Π΄Π°Π½Π½ΠΈ
dbup.github.io

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

Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ ΠΈ ΠΈΠ·Π±ΠΎΡ€ Π½Π° систСми Π·Π° миграция Π½Π° Π΄Π°Π½Π½ΠΈ
github.com/chucknorris/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

Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ ΠΈ ΠΈΠ·Π±ΠΎΡ€ Π½Π° систСми Π·Π° миграция Π½Π° Π΄Π°Π½Π½ΠΈ
github.com/fluentmigrator/fluentmigrator

Най-популярният инструмСнт Π·Π° ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ, ΠΈΠΌΠ°Ρ‰ голяма армия ΠΎΡ‚ послСдоватСли. Разпространява сС ΠΏΠΎΠ΄ лицСнзия Apache 2.0. ΠšΠ°ΠΊΡ‚ΠΎ Π΅ посочСно Π² описаниСто, Π΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° Π·Π° ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ Π·Π° .NET, Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Π° Π½Π° Ruby on Rails Migrations. ΠŸΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Π² схСмата Π½Π° Π‘Π” сС описват Π² класовС Π½Π° C#.

Π’ΡƒΠΊ ΠΈΠΌΠ° прСдимства:

  • ΠŸΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈΡ‚Π΅ Π‘Π£Π‘Π”
  • ΠŸΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° .NET Core
  • Голямо Ρ€Π°Π·Π²ΠΈΡ‚ΠΎ общСство
  • ΠšΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΈΡ‚Π΅ с ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ сС Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π²Π°Ρ‚ послСдоватСлно – Π·Π° ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈΡ‚Π΅ сС посочва Ρ€Π΅Π΄Π° Π½Π° изпълнСниС. ОсвСн Ρ‚ΠΎΠ²Π°, Π°ΠΊΠΎ възникнС ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ ΠΎΠΊΠΎΠ»ΠΎ Π΅Π΄ΠΈΠ½ ΠΎΠ±Π΅ΠΊΡ‚, Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΏΡ€ΠΈ обСдиняванСто Π½Π° ΠΊΠΎΠ΄Π° сС ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° ΠΏΠΎ ΡΡŠΡ‰ΠΈΡ Π½Π°Ρ‡ΠΈΠ½, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ Π² останалата част ΠΎΡ‚ ΠΊΠΎΠ΄Π°.
  • Има ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ сС ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚ слСд ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Π·Π°Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ Π½Π° миграцията ΠΈ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° носят Π² сСбС си сСрвизни Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. ΠŸΠΎΡΠ»Π΅Π΄Π½ΠΎΡ‚ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ бСшС ΠΏΡ€Π΅Π΄ΠΈ мСсСц, тоСст ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΡŠΡ‚ ΠΆΠΈΠ²Π΅Π΅.

Π©ΠΎ сС отнася Π΄ΠΎ Π½Π΅Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ†ΠΈΡ‚Π΅, Ρ‚ΡƒΠΊ:

  • Липсва Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½Π° гСнСрация Π½Π° ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ
  • Липсва Π²Ρ€ΡŠΠ·ΠΊΠ° с ΠΌΠΎΠ΄Π΅Π»ΠΈΡ‚Π΅ Π½Π° EF
  • Няма снимки Π½Π° Π‘Π”

Какъв бСшС Π½Π°ΡˆΠΈΡΡ‚ ΠΈΠ·Π±ΠΎΡ€?

Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ ΠΈ ΠΈΠ·Π±ΠΎΡ€ Π½Π° систСми Π·Π° миграция Π½Π° Π΄Π°Π½Π½ΠΈ

Най-Π³ΠΎΠ»Π΅ΠΌΠΈΡ‚Π΅ споровС сС Ρ€Π°Π·Π²ΠΈΡ…Π° ΠΎΠΊΠΎΠ»ΠΎ Π΄Π²Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€Π° – Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½Π° гСнСрация Π½Π° ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ ΠΈ Ρ€Π°Π·ΡƒΠΌΠ½ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΈ. ΠžΡΡ‚Π°Π½Π°Π»ΠΈΡ‚Π΅ Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈ плаши Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ. Π’ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Π½Π° ΠΎΠ±ΡΡŠΠΆΠ΄Π°Π½ΠΈΡΡ‚Π° Π΅ΠΊΠΈΠΏΡŠΡ‚ Ρ€Π΅ΡˆΠΈ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Fluent Migrator Π² новия ΠΏΡ€ΠΎΠ΅ΠΊΡ‚. Π—Π°Ρ‰ΠΎΡ‚ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΈΡ‚Π΅ Π² Π΄ΡŠΠ»Π³ΠΎΡΡ€ΠΎΡ‡Π΅Π½ ΠΏΠ»Π°Π½ Ρ‰Π΅ донСсС ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΏΠΎΠ»Π·ΠΈ.

Изводи

Π Π°Π·Π±ΠΈΡ€Π° сС, ΠΈΠ΄Π΅Π°Π»Π½ΠΈ инструмСнти Π½Π΅ ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‚. И Π·Π° нас ΠΏΡ€ΠΈ ΠΈΠ·Π±ΠΎΡ€Π° сС Π½Π°Π»ΠΎΠΆΠΈ Π΄Π° поставим ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ΠΈ Π² Π½Π°ΡˆΠΈΡ‚Π΅ "ТСлания". Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‚ΠΎΠ²Π°, Π·Π° Π΄Ρ€ΡƒΠ³ΠΈ Π΅ΠΊΠΈΠΏΠΈ ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС ΠΎΠΊΠ°ΠΆΠ°Ρ‚ Ρ€Π΅ΡˆΠ°Π²Π°Ρ‰ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈ. НадявамС сС Ρ‚Π°Π·ΠΈ статия Π΄Π° Π²ΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π΅ ΠΏΡ€ΠΈ ΠΈΠ·Π±ΠΎΡ€Π°.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС със Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS ΠΈ VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС със Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS ΠΈ VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster