ããŒã¿ç§»è¡ã·ã¹ãã ã®æ¯èŒãšéžæ
ããŒã¿ ã¢ãã«ã¯éçºããã»ã¹äžã«å€æŽãããåŸåããããããæç¹ã§ããŒã¿ããŒã¹ã«å¯Ÿå¿ããªããªããŸãã ãã¡ãããããŒã¿ããŒã¹ãåé€ããããšãã§ããŸãããã®åŸãORM ã¯ã¢ãã«ã«äžèŽããæ°ããããŒãžã§ã³ãäœæããŸããããã®æé ã§ã¯æ¢åã®ããŒã¿ã倱ãããŸãã ãããã£ãŠã移è¡ã·ã¹ãã ã®æ©èœã¯ãã¹ããŒãå€æŽã®çµæãšããŠãæ¢åã®ããŒã¿ã倱ãããšãªããã¢ããªã±ãŒã·ã§ã³å
ã®ããŒã¿ ã¢ãã«ãšç¢ºå®ã«åæãããããã«ããããšã§ãã
ãã®èšäºã§ã¯ãããŒã¿ããŒã¹ã®ç§»è¡ã管çããããã®ããŸããŸãªããŒã«ã«ã€ããŠèŠãŠãããããšæããŸãã ãã®ã¬ãã¥ãŒãåæ§ã®éžæã«çŽé¢ããŠããéçºè
ã«ãšã£ãŠåœ¹ç«ã€ããšãé¡ã£ãŠããŸãã
ã¿ã¹ã¯
åœç€Ÿã¯çŸåšã次äžä»£è£œåã§ãã Docs Security Suite (DSS) ã®éçºãç©æ¥µçã«è¡ã£ãŠããŸãã ãµãŒããŒéšåã¯.Net Coreã§èšè¿°ãããDBMSãšããŠEntity Framework Coreã䜿çšãããŸãã ã¢ããªã±ãŒã·ã§ã³ãèšèšãããšãã¯ãCode First ã¢ãããŒãã䜿çšããŸãã
ã¢ããªã±ãŒã·ã§ã³ ãã¡ã€ã³ ã¢ãã«ã¯è€æ°ã®éçºè ã«ãã£ãŠåæã«äœæãããåéçºè ãã·ã¹ãã ã®ç¬èªã®è«çéšåãæ åœããŸãã
åäžä»£ã® DSS ã§ã¯ã移è¡ç®¡çã·ã¹ãã ãšããŠåŸæ¥ã® Entity Framework Migrations (EF 6) ã䜿çšãããŠããŸããã ãã ããããã«å¯ŸããŠããã€ãã®äžæºãèç©ãããŠããããã®äž»ãªäžæºã¯ãEF ã«ã¯ããŒãžã§ã³ã®ç«¶åã解決ããããã®è³¢æãªã¢ãããŒããæ¬ ããŠãããšããããšã§ãã ãã®äºå®ã¯ããµããŒãã®äžç°ãšããŠãã°ãä¿®æ£ãããšãã«äŸç¶ãšããŠåæºããããã代æ¿ãªãã·ã§ã³ãæ€èšããããšã«ããŸããã
è°è«ã®çµæã移è¡ç®¡çã·ã¹ãã ã«å¯Ÿãã次ã®èŠä»¶ã圢æãããŸããã
- ããŸããŸãªDBMSã®ãµããŒãã MS SQL ServerãPostgreSQLãOracle ãå¿ èŠã§ãããä»ã®ãã®ã䜿çšã§ããå¯èœæ§ããããŸã
- ORM ã䜿çšããŠäœæ¥ããŸãã åœå㯠EF Core ã䜿çšããäºå®ã§ããããèšèšæ®µéã§ã¯ä»ã® ORM ãæ€èšããæºåãã§ããŠããŸããã
- 移è¡ã®èªåçæã Code First ã®éçºãèæ ®ãããšã移è¡ããææžããããå¿ èŠã¯é¿ããããšèããŠããŸãã
- ããŒãžã§ã³ã®ç«¶åã åæ£éçºç°å¢ã§ã¯ãããŒãžæã« EF Core ã§ç«¶åãçºçããå¯èœæ§ããããŸãã ã¢ããªã±ãŒã·ã§ã³ã®ããŸããŸãªéšåãããŸããŸãªéçºè ã«ãã£ãŠäœæãããããããã®äœæ¥ã«å€ãã®æéãè²»ããå¿ èŠããããããããã¯é倧ãªåé¡ã«ãªããŸãã
- é«åºŠãªããã¥ã¡ã³ããšãµããŒãã ããã§ã¯èª¬æã®å¿ èŠã¯ãªããšæãããŸã
- ç¡æã ã·ã¹ãã ã¯ããã»ã©é«äŸ¡ã§ãé«é¡ã§ããããŸããããå©äŸ¿æ§ã®ç¹ã§çæ³çã§ãããããåºæºã¯æ¡ä»¶ä»ãã§ãããŸããèæ ®ããæºåãã§ããŠããŸãã
å°ã調æ»ããçµæã次ã®ãªãã·ã§ã³ãèŠã€ãããæ€èšããããšãæãŸããããšãããããŸããã
- EF ã³ã¢ã®ç§»è¡
- DBup
- ã©ãŠã³ãããŠã¹E
- ThinkingHome.Migrator
- æµæ¢ãªç§»è¡è
ãããŠããå°ã詳ãã
åœç¶ã®ããšãªããããããæåã®äž»ãªéžæè¢ã§ããã ã¿ã³ããªã³ãããããªããŠãããã«äœ¿ãããã€ãã£ã楜åšã§ãã 倧éã®ããã¥ã¡ã³ããå ¬åŒãªãã®ãããã§ãªããã®ãã·ã³ãã«ããªã©ã ãã ããåŸæ¥ã® EF ã«é¢ããèŠæ ã¯ãEF Core ã«ãéåžžã«é¢é£ããŠããŸãã
ãããã£ãŠãEF Core ã®å©ç¹ã匷調衚瀺ãããŸãã
- Microsoft ãµããŒãããã·ã¢èªãå«ãããã¥ã¡ã³ãã巚倧ãªã³ãã¥ããã£
- CodeFirstã«åºã¥ãã移è¡ã®èªåçæ
- EF 6 ãšæ¯èŒããŠãEF Core ã¯ããŒã¿ããŒã¹ã®ã¹ãããã·ã§ãããä¿åããªããªããŸããã Code First 㧠EF Core ã䜿çšããå ŽåãããŒã¿ããŒã¹ããããã€ããå¿ èŠããªããªããŸããã
- Code First ããå®è¡ããŠãããããå¿ èŠãªãã¹ãŠã®ããŒã¿ ã¢ã¯ã»ã¹ ãããã€ããŒã«å¯Ÿã㊠XNUMX åã®ç§»è¡ãå®è¡ã§ããŸãã
- ãããã€ãã«é¢ããŠã¯ãPostgreSQL ããµããŒããããŠãããOracle ããµããŒããããŠããããªã©ãããã«ã¯ MS SQL Server ããµããŒããããŠããŸã ï
ãããŠãã¡ãªããã:
- çŽäºè§£æ±ºã¯åãã¬ãã«ãç¶æããŸããã 移è¡ãé åºç«ãŠãŠããŒã¿ããŒã¹ã®ã¹ãããã·ã§ãããæŽæ°ããå¿ èŠããã
- 移è¡ãçæãããã¢ãã«ãžã®äŸåæ§
ããŒã¿ããŒã¹ã¢ãã
DbUp ã¯ãNuGet ã«ãã£ãŠã€ã³ã¹ããŒã«ããã .NET ã©ã€ãã©ãªã§ãããå€æŽã SQL Server ã«ããã·ã¥ããã®ã«åœ¹ç«ã¡ãŸãã ã©ã®å€æŽã¹ã¯ãªããããã§ã«å®è¡ãããŠãããã远跡ããããŒã¿ããŒã¹ã®æŽæ°ã«å¿ èŠãªå€æŽã¹ã¯ãªãããå®è¡ããŸãã ãã®ã©ã€ãã©ãªã¯ ASP.NET äžã®ãªãŒãã³ ãœãŒã¹ ããã° ãšã³ãžã³ã®ãããžã§ã¯ãããçãŸããMIT ã©ã€ã»ã³ã¹ã®äžã«ååšããã³ãŒã㯠GitHub ã«ãããŸãã 移è¡ã¯ T-SQL ã䜿çšããŠèª¬æãããŸãã
å©ç¹ã¯æ¬¡ã®ãšããã§ãã
- å€æ°ã® DBMS (MS SQL ServerãPstgreSQLãMySQL) ã®ãµããŒã
- ã¹ã¯ãªãã㯠T-SQL ã§èšè¿°ãããŠãããããéåžžã«åçŽã«èŠããŸãã
- 競åã SQL ã䜿çšããŠè§£æ±ºãããŸã
ãããŠçæ:
- ããŸããŸãª DBMS ããµããŒããããŠããŸãããOracle ã¯ãã®äžã«å«ãŸããŸããã
- ORM ãšå¯Ÿè©±ããŸãã
- T-SQL ã¹ã¯ãªãããæåã§èšè¿°ããããšã¯ãç§ãã¡ãç®æããŠãããã®ã§ã¯ãããŸãã
- ããã¥ã¡ã³ããšã³ãã¥ããã£ã¯ãŸããŸãã§ãããSQL ã¹ã¯ãªãããæžããšããç¹ã§ã¯å¿ èŠãªããããããŸããã
ã©ãŠã³ãããŠã¹E
ãã®ç§»è¡ç®¡çããŒã«ã¯ã以åã®ãã®ãšåæ§ã« Apache 2.0 ã©ã€ã»ã³ã¹ã«åºã¥ããŠé åžãããT-SQL 移è¡ãšã³ãžã³äžã§å®è¡ãããŸãã æããã«ãéçºè ã¯å¿«é©ãªéçºããã»ã¹ãäœæããããšããããDBMS ãµããŒãã«é¢ããæè¡çåé¡ã解決ããããšãåªå ããããã§ãã
é·æïŒ
- å¿ èŠãª DBMS (Oracle ãå«ã) ããµããŒã
çæïŒ
- Oracle (ããã³ãç§ãã¡ã«ã¯é¢ä¿ã®ãªã Access) 㯠.NET Core ã§ã¯ãµããŒããããŠãããã.NET Full Framework ã§ã®ã¿ãµããŒããããŠããŸãã
- ORM ã§ã¯åäœããŸãã
- 以åã®ããŒã«ãããããã¥ã¡ã³ããããã«å°ãªããªã£ãŠããŸã
- ç¹°ãè¿ãã«ãªããŸããã移è¡ã¯ã¹ã¯ãªããã«ãã£ãŠèšè¿°ãããŸã
ThinkingHome.Migrator
ããŒãžã§ã³ç®¡çãããããŒã¿ããŒã¹ ã¹ããŒãã .NET Core ãã©ãããã©ãŒã ã«ç§»è¡ããããã®ããŒã«ãMIT ã©ã€ã»ã³ã¹ã«åºã¥ããŠé
åžãããŸãã
é·æïŒ
- .NET Core åãã«èšèš
- 移è¡ã®åå²ã·ãŒã±ã³ã¹ãå®è£ ããŸãã
- 移è¡ãã°ã®å®è£
çæïŒ
- æåŸã«æŽæ°ãããã®ã¯ XNUMX 幎åã§ãã ã©ããããããžã§ã¯ãã¯ãµããŒããããŠããªãããã§ã
- Oracle ã§ã¯ãµããŒããããŠããŸãã (èšäºã«ã¯ã.NET Core ã®å®å®ããå®è£ ããªãããšãåå ã§ãããšèšèŒãããŠããŸããããã㯠XNUMX 幎åã®è©±ã§ã)
- 移è¡ã®èªåçæã¯ãããŸãã
å šäœãšããŠããã®ãããžã§ã¯ãã¯ãç¹ã«çºå±ããå Žåã«ã¯ææã«èŠããŸãããç§ãã¡ã¯ä»ããã§æ±ºæãäžãå¿ èŠããããŸããã
æµæ¢ãªç§»è¡è
å€ãã®ãã¡ã³ãæã€æã人æ°ã®ãã移è¡ããŒã«ã Apache 2.0 ã©ã€ã»ã³ã¹ã«åºã¥ããŠé åžãããŸãã 説æã«èšèŒãããŠããããã«ããã㯠Ruby on Rails Migrations ã«äŒŒã .NET çšã®ç§»è¡ãã¬ãŒã ã¯ãŒã¯ã§ãã ããŒã¿ããŒã¹ ã¹ããŒãã®å€æŽã¯ C# ã¯ã©ã¹ã§èª¬æãããŸãã
ããã«ã¯æ¬¡ã®ãããªå©ç¹ããããŸãã
- å¿ èŠãª DBMS ã®ãµããŒã
- .NETã³ã¢ã®ãµããŒã
- 倧èŠæš¡ãªéçºãããã³ãã¥ããã£
- 移è¡éã®ç«¶åã¯é çªã«è§£æ±ºãããŸãã移è¡ã®å®è¡é åºã¯æå®ãããŠããŸãã ããã«ãXNUMX ã€ã®ãšã³ãã£ãã£ã®åšå²ã§ç«¶åãçºçããå Žåãã³ãŒããããŒãžãããšãã«ãã³ãŒãã®æ®ãã®éšåãšåãæ¹æ³ã§è§£æ±ºãããŸãã
- 移è¡ãæåããåŸã«å®è¡ããããããã¡ã€ã«ããããŸãã ãããŠããµãŒãã¹æ©èœãå®è¡ã§ããŸããæåŸã®æŽæ°ã¯ XNUMX ãæåã§ããã€ãŸãããããžã§ã¯ãã¯çããŠããŸãã
ãã€ãã¹ç¹ã«ã€ããŠã¯ã次ã®ãšããã§ãã
- 移è¡ã®èªåçæã¯ãããŸãã
- EFã¢ãã«ãšã¯é¢ä¿ãããŸãã
- ããŒã¿ããŒã¹ã®ã¹ãããã·ã§ããããããŸãã
ç§ãã¡ã®éžæã¯äœã§ãããïŒ
çœç±ããè°è«ã¯ã移è¡ã®èªåçæãšç«¶åã®å¥å
šãªè§£æ±ºãšãã XNUMX ã€ã®ãã©ã¡ãŒã¿ãäžå¿ã«å±éãããŸããã ä»ã®èŠçŽ ã¯ããã»ã©æããããŸããã§ããã ãã®çµæãè°è«ã®çµæã«åºã¥ããŠãããŒã ã¯æ°ãããããžã§ã¯ã㧠Fluent Migrator ã䜿çšããããšã決å®ããŸããã ãªããªããå°æ¥çã«çŽäºã解決ããããšã¯ãããå€ãã®å©çãããããããã§ãã
æèŠ
ãã¡ãããå®ç§ãªããŒã«ã¯ãããŸããã ãã®ãããç§ãã¡ã¯èªåã®ã欲ãããã®ããåªå
ããŠéžæããå¿
èŠããããŸããã ãã ããä»ã®ããŒã ãä»ã®ã¿ã¹ã¯ã®å Žåã¯ãä»ã®èŠå ã決å®çãªèŠå ãšãªãå¯èœæ§ããããŸãã ãã®èšäºãããªãã®éžæã«åœ¹ç«ã€ããšãé¡ã£ãŠããŸãã
åºæïŒ habr.com