ãã®èšäºã¯ãEntity Frameworkãšãã®åºæ¬çãªæäœã«ç²ŸéããŠããããšãåæãšããŠããŸãã ãã以å€ã®å Žåã¯ãå ã«é²ãåã«æåã«Code First Migrationsãèªãå¿ èŠããããŸãã
äžæ¯ã®ã³ãŒããŒã泚ããããªãã¯èšäºå šäœãèªãå¿ èŠããããŸã
ããŒã ã¯ãŒã¯ã§ã¯ãåé¡ã¯äž»ã«2人ã®éçºè ãããŒã«ã«ããŒã¿ããŒã¹ã«äœæãã移è¡ã®ããŒãžã«é¢é£ããŠããŸãã ãããã®åé¡ã解決ããæé ã¯éåžžã«ç°¡åã§ããã移è¡ã®ä»çµã¿ãæ確ã«ç解ããå¿ èŠããããŸãã èšäºå šäœã泚ææ·±ãèªãã§ãã ããã
äžè¬çãªåå
è€æ°ã®éçºè ãäœæãã移è¡ã®ããŒãžã管çããæ¹æ³ã詳ãã調ã¹ãåã«ãããã€ãã®äžè¬çãªååã瀺ããŸãã
åããŒã ã¡ã³ããŒã«ã¯ãããŒã«ã«éçºããŒã¿ããŒã¹ãå¿ èŠã§ãã
移è¡ãšã³ãžã³ã¯ã __ MigrationsHistoryããŒãã«ã䜿çšããŠãããŒã¿ããŒã¹ã«é©çšããã移è¡ã®ãªã¹ããä¿åããŸãã ããŒã ã«ç§»è¡ãçæããéçºè ãè€æ°ããå ŽåãåãããŒã¿ããŒã¹ïŒãããã£ãŠãåã__MigrationsHistoryããŒãã«ïŒã§äœæ¥ããããšãããšã移è¡ã¡ã«ããºã ãå°é£ã«ãªãå¯èœæ§ããããŸãã
ãã¡ããã移è¡ãäœæããªãããŒã ã¡ã³ããŒãããå Žåãéçºçšã®äžå€®ããŒã¿ããŒã¹ã䜿çšããŠãåé¡ã¯ãããŸããã
èªå移è¡ãé¿ãã
äžçªäžã®è¡ã¯ãèªå移è¡ã¯æåã¯ããŒã ã¯ãŒã¯ã§èŠæ ããè¯ãããå®éã«ã¯æ©èœããªããšããããšã§ãã çç±ãç¥ãããå Žåã¯ãèšäºãèªã¿ç¶ããŠãã ãããããã§ãªãå Žåã¯ã次ã®ç« ã«é²ãã§ãã ããã
èªå移è¡ã«ãããã³ãŒã移è¡ïŒã³ãŒãããŒã¹ã®ç§»è¡ïŒã§ãã¡ã€ã«ãäœæããããšãªããçŸåšã®ã¢ãã«ã«åŸã£ãŠããŒã¿ããŒã¹ã¹ããŒããæŽæ°ã§ããŸãã
èªå移è¡ã¯ããããŸã§äœ¿çšããããšããããã³ãŒãããŒã¹ã®ç§»è¡ãäœæããããšããªãå Žåã«ã®ã¿ãããŒã äœæ¥ã§ããŸãæ©èœããŸãã åé¡ã¯ãèªå移è¡ãå¶éãããŠãããããããã£/åã®ååã®å€æŽãããããŒãã«ããå¥ã®ããŒãã«ãžã®ããŒã¿ã®è»¢éãªã©ãå€ãã®æäœã«å¯Ÿå¿ã§ããªãããšã§ãã ãã®ãããªã·ããªãªãåŠçããã«ã¯ãæçµçã«ã³ãŒãããŒã¹ã®ç§»è¡ãäœæïŒããã³çæãããã³ãŒããç·šéïŒããèªå移è¡ã䜿çšããŠåŠçãããå€æŽãæ··åããŸãã ããã«ããã2人ã®éçºè éã§å€æŽãããŒãžããããšã¯ã»ãšãã©äžå¯èœã«ãªããŸãã
翻蚳è ããïŒãªãªãžãã«ã®èšäºã«2ã€ã®ã¹ã¯ãªãŒã³ãã£ã¹ããæçš¿ãããŠããŸããèªãããšããå§ãããŸã
移è¡ã®ã¡ã«ããºã ã®åå
ããŒã ã§ç§»è¡ãæ£åžžã«äœ¿çšããããã®éµã¯ã移è¡ã¡ã«ããºã ãã¢ãã«æ å ±ã远跡ããã³äœ¿çšããŠå€æŽãæ€åºããæ¹æ³ãåºæ¬çã«ç解ããããšã§ãã
æåã®ç§»è¡
æåã®ç§»è¡ããããžã§ã¯ãã«è¿œå ãããšããããã±ãŒãžãããŒãžã£ãŒã³ã³ãœãŒã«ã§Add-Migration Firstãªã©ãå®è¡ããŸãã ãã®ã³ãã³ããå®è¡ããæé ã以äžã«ç€ºããŸãã

ã³ãŒãã«åºã¥ããŠãçŸåšã®ã¢ãã«ïŒ1ïŒãèšç®ãããŸãã 次ã«ãç°ãªãã¢ãã«ã䜿çšããŠãå¿ èŠãªããŒã¿ããŒã¹ãªããžã§ã¯ããèšç®ãããŸãïŒ2ïŒ-ããã¯æåã®ç§»è¡ã§ãããããã¢ãã«ã®éãã¯æ¯èŒã®ããã«ç©ºã®ã¢ãã«ã䜿çšããŸãã å¿ èŠãªå€æŽã¯ã³ãŒããžã§ãã¬ãŒã¿ãŒã«è»¢éãããå¿ èŠãªç§»è¡ã³ãŒãïŒ3ïŒãäœæãããVisual Studioãœãªã¥ãŒã·ã§ã³ïŒ4ïŒã«è¿œå ãããŸãã
ã¡ã€ã³ãã¡ã€ã«ã«æ ŒçŽãããŠãã移è¡ã³ãŒãã«å ããŠã移è¡ã¡ã«ããºã ã¯è¿œå ã®åé¢ã³ãŒããã¡ã€ã«ãäœæããŸãã ãããã¯ã移è¡ãšã³ãžã³ã§äœ¿çšãããã¡ã¿ããŒã¿ãã¡ã€ã«ã§ãããå€æŽããªãã§ãã ããã ãããã®ãã¡ã€ã«ã®1ã€ã¯ãªãœãŒã¹ãã¡ã€ã«ïŒ.resxïŒã§ã移è¡ãäœæããããšãã®ã¢ãã«ã®ã¹ãããã·ã§ãããå«ãŸããŠããŸãã 次ã®ã»ã¯ã·ã§ã³ã§ã¯ããã®äœ¿çšæ¹æ³ã確èªããŸãã
ãã®æç¹ã§ã Update-Databaseãå®è¡ããŠããŒã¿ããŒã¹ã«å€æŽãé©çšããã¢ããªã±ãŒã·ã§ã³ã®æ®ãã®å®è£ ãéå§ã§ããŸãã
åŸç¶ã®ç§»è¡
ã¢ãã«ã«ããã€ãã®å€æŽãå ããŸãããã®äŸã§ã¯ã Urlããããã£ãBlogã¯ã©ã¹ã«è¿œå ããŸãã 次ã«ã Add-Migration AddUrlã³ãã³ããå®è¡ããŠç§»è¡ãäœæããé©åãªå€æŽãããŒã¿ããŒã¹ã«é©çšããå¿ èŠããããŸãã ãã®ã³ãã³ããå®è¡ããæé ã以äžã«ç€ºããŸãã

åååæ§ãçŸåšã®ã¢ãã«ã¯ã³ãŒãããèšç®ãããŸãïŒ1ïŒã ãã ããä»åã¯æ¢åã®ç§»è¡ãããã以åã®ã¢ãã«ã¯æåŸã®ç§»è¡ããæœåºãããŸãïŒ2ïŒã ãããã®2ã€ã®ã¢ãã«ãæ¯èŒããŠãããŒã¿ããŒã¹ã§å¿ èŠãªå€æŽãèŠã€ãïŒ3ïŒããã®åŸãããã»ã¹ã¯ä»¥åã®ããã«çµäºããŸãã
åãããã»ã¹ã¯ããããžã§ã¯ãã«è¿œå ããã次ã®ãã¹ãŠã®ç§»è¡ã«äœ¿çšãããŸãã
ã¢ãã«ã·ã§ããã§æ¹¯æ°ãç«ãŠãçç±
EFãæ¯èŒã®ããã«ã¢ãã«ã¹ãããã·ã§ããã䜿çšããçç±ãçåã«æããããããŸãããããŒã¿ããŒã¹ãåã«èŠãŠã¯ãããŸããã
EFãã¢ãã«ã®ç¶æ ãä¿æããçç±ã¯ããã€ããããŸãã
- ããã«ãããããŒã¿ããŒã¹ãEFã¢ãã«ãšã¯ç°ãªããã®ã«ããããšãã§ããŸãã ãããã®å€æŽã¯ãããŒã¿ããŒã¹ã§çŽæ¥è¡ãããšãã§ããŸãããŸãã¯ã移è¡ã®ã¹ãã£ãã©ãŒã«ãã³ãŒããå€æŽããŠå€æŽããããšãã§ããŸãã ãããå®éã®ããã€ãã®äŸã§ãïŒ
- æ¿å
¥åãšæŽæ°åã1ã€ä»¥äžã®ããŒãã«ã«è¿œå ãããããEFã¢ãã«ã«å«ããããªãå Žåã 移è¡ãšã³ãžã³ãããŒã¿ããŒã¹ã調ã¹ãå Žåã移è¡ã³ãŒããçæãããã³ã«ãããã®åãåžžã«åé€ããããšããŸãã ã¢ãã«ã¹ãããã·ã§ããã䜿çšãããšãEFã¯ã¢ãã«å
ã®å¿
èŠãªå€æŽã®ã¿ãæ€åºããŸãã
- ç¹å®ã®ãããã°æ
å ±ãæŽæ°ããããã«äœ¿çšãããã¹ãã¢ãããã·ãŒãžã£ã®æ¬äœãå€æŽããå Žåã 移è¡ã¡ã«ããºã ãããŒã¿ããŒã¹å
ã®ã¹ãã¢ãããã·ãŒãžã£ã調ã¹ãå Žåã圌ã¯çµ¶ãããããå®çŸ©ã«ãªã»ããããããšããŸãã ã¢ãã«ã¹ãããã·ã§ããã䜿çšããå ŽåãEFã¯ãEFã¢ãã«ã®ããã·ãŒãžã£ãå€æŽãããšãã¹ãã¢ãããã·ãŒãžã£ãå€æŽããã³ãŒããçæããŸã
- ããŒã¿ããŒã¹å
ã®ããŒãã«ã®è¿œå ãEFããDBãã¥ãŒãžã®ãããã³ã°ãªã©ãè¿œå ã®ã€ã³ããã¯ã¹ãè¿œå ããå Žåã«ãåãååãé©çšãããŸãã
- æ¿å
¥åãšæŽæ°åã1ã€ä»¥äžã®ããŒãã«ã«è¿œå ãããããEFã¢ãã«ã«å«ããããªãå Žåã 移è¡ãšã³ãžã³ãããŒã¿ããŒã¹ã調ã¹ãå Žåã移è¡ã³ãŒããçæãããã³ã«ãããã®åãåžžã«åé€ããããšããŸãã ã¢ãã«ã¹ãããã·ã§ããã䜿çšãããšãEFã¯ã¢ãã«å
ã®å¿
èŠãªå€æŽã®ã¿ãæ€åºããŸãã
- EFã¢ãã«ã«ã¯ãããŒã¿ããŒã¹ã€ã¡ãŒãžã ãã§ã¯ãããŸããã ã¢ãã«ãããå Žåã移è¡ã¡ã«ããºã ã«ãããã¢ãã«ã®ããããã£ãšã¯ã©ã¹ãããã³ããããåãšããŒãã«ã«ã©ã®ããã«ãããããããã«é¢ããæ
å ±ã衚瀺ã§ããŸãã ãã®æ
å ±ã«ãããèªåã³ãŒãçæã«ãã移è¡ãšã³ãžã³ãããã¹ããŒãã«ãªããŸãã ããšãã°ãåã®ååãå€æŽãããšã移è¡ãããã³ã°ã¯ååã®å€æŽãæ€åºããåãããããã£ã§ããããšã確èªããŸãã ããŒã¿ããŒã¹ã ããèŠããšäžå¯èœã§ã
ããŒã ã¯ãŒã¯ã®åé¡ã®åå
åã®ã»ã¯ã·ã§ã³ã§èª¬æããããã»ã¹ã¯ãã¢ããªã±ãŒã·ã§ã³ã§äœæ¥ããŠããéçºè ãããªãã ãã§ããå Žåã«æé©ã§ãã ã¢ãã«ãå€æŽããã®ãããªãã ãã§ããå Žåã圌ã¯ããŒã ã§ãããŸãæ©èœããŸãã ãã®å Žåãã¢ãã«ã«å€æŽãå ãã移è¡ãçæããããããããŒãžã§ã³ç®¡çã·ã¹ãã ã«éä¿¡ã§ããŸãã ä»ã®éçºè ã¯ããã®ãããªå€æŽãåãåãã Update-Databaseãå®è¡ããŠã¹ããŒããæŽæ°ããå ŽåããããŸãã
EFã¢ãã«ã«å€æŽãå ããŠããŒãžã§ã³ç®¡çã·ã¹ãã ã«éä¿¡ããéçºè ãæ°äººãããšãåé¡ãçºçãå§ããŸãã EFã«æ¬ ããŠããã®ã¯ãããŒã«ã«ã®ç§»è¡ããæåŸã®åæåŸã«ããŒãžã§ã³ç®¡çã·ã¹ãã ã«éãããä»ã®éçºè ã®ç§»è¡ãšçµã¿åãããäžæµã®æ¹æ³ã§ãã
競åã®ããŒãžã®äŸ
ãŸãããã®ãããªç«¶åãããŒãžããç¹å®ã®äŸãèŠãŠã¿ãŸãããã åã«èª¿ã¹ãäŸããç¶ããŸãã åºçºç¹ãšããŠãåã®ã»ã¯ã·ã§ã³ããã®å€æŽããã®éçºè ã«ãã£ãŠæ€èšŒããããšä»®å®ããŸãããã ã³ãŒããå€æŽãã2人ã®éçºè ã远跡ããŸãã
äžé£ã®å€æŽãéããŠãEFã¢ãã«ãšç§»è¡ã远跡ããŸãã 次ã®å³ã«ç€ºãããã«ãäž¡æ¹ã®éçºè ã¯ããŒãžã§ã³ç®¡çã·ã¹ãã ã®ãªããžããªãä»ããŠåæããŸãã

éçºè ïŒ1ãšéçºè ïŒ2ã¯ãããŒã«ã«ã³ãŒãããŒã¹ã®EFã¢ãã«ã«ããã€ãã®å€æŽãå ããŸãã éçºè ïŒ1ã¯Ratingã¯ã©ã¹ãBlogã¯ã©ã¹ã«è¿œå ãã AddRating移è¡ãäœæããŠãå€æŽãããŒã¿ããŒã¹ã«é©çšããŸãã éçºè ïŒ2ã¯Readerã¯ã©ã¹ãBlogã¯ã©ã¹ã«è¿œå ãã AddReaders移è¡ãäœæããŸãã äž¡æ¹ã®éçºè ã¯ã Update-Databaseãå®è¡ããŠããŒã«ã«ããŒã¿ããŒã¹ã«å€æŽãé©çšããã¢ããªã±ãŒã·ã§ã³ã®éçºãç¶ããŸãã
泚ïŒç§»è¡ã¯ã¿ã€ã ã¹ã¿ã³ãã§å§ãŸãããããã®å³ã¯ãéçºè ïŒ2ããã®AddReaders移è¡ããéçºè ïŒ1ããã®AddRating移è¡ã®åŸã«æ¥ãããšã瀺ããŠããŸãã ããŒã ã¯ãŒã¯ã®èŠ³ç¹ããã¯ããããã®å€æŽãã©ã®ãããªé åºã§äœæããããã¯éèŠã§ã¯ãããŸããã次ã®ã»ã¯ã·ã§ã³ã§ããããçµåããããã»ã¹ãæ€èšããŸãã

ä»æ¥ãéçºè ïŒ1ã¯ãããŒãžã§ã³ç®¡çã·ã¹ãã ãžã®å€æŽãæåã«æçš¿ããã®ã§å¹žéã§ããã 誰ããªããžããªã«å€æŽãéä¿¡ããŠããªããããããŒãžãå®è¡ããã«å€æŽãç°¡åã«æçš¿ã§ããŸãã

次ã«ãéçºè ïŒ2ãå€æŽãéä¿¡ãããšãã§ãã 圌ã¯ããã»ã©ã©ãããŒã§ã¯ãããŸããã ãªããªã æåŸã®åæåŸã«èª°ããå€æŽãæçš¿ããå Žåãéçºè ã¯ããããéžæããŠããŒãžããå¿ èŠããããŸãã ããŒãžã§ã³ç®¡çã·ã¹ãã ã¯ãéåžžã«åçŽãªã®ã§ãã³ãŒãã¬ãã«ã§å€æŽãèªåçã«ããŒãžã§ããå¯èœæ§ããããŸãã åæåŸã®ããŒã«ã«éçºè ã³ãŒãããŒã¹ïŒ2ã®ã¹ããŒã¿ã¹ã次ã®å³ã«ç€ºããŸãã

ãã®æç¹ã§ãéçºè ïŒ2ã¯Update-Databaseãå®è¡ã§ããŸããããã«ãããæ°ããAddRating移è¡ïŒéçºè ïŒ2ããŒã¿ããŒã¹ã«ã¯é©çšãããŠããªãïŒãæ€åºããŠé©çšã§ããŸãã ããã§ã è©äŸ¡åãããã°ããŒãã«ã«è¿œå ãããããŒã¿ããŒã¹ãã¢ãã«ãšåæãããŸãã
ããšãã°ãããã€ãã®åé¡ããããŸãã
- Update-Databaseæäœã¯AddRating移è¡ãé©çšããŸãããèŠåã衚瀺ããŸãã
ä¿çäžã®å€æŽããããèªå移è¡ãç¡å¹ã«ãªã£ãŠãããããçŸåšã®ã¢ãã«ã«äžèŽããããã«ããŒã¿ããŒã¹ãæŽæ°ã§ããŸãã...
åé¡ã¯ãã¢ãã«ã®ã¹ãããã·ã§ãããæåŸã®ç§»è¡ïŒAddReaderïŒã«æ ŒçŽããã ããã°ã¯ã©ã¹ã®Ratingããããã£ãã¹ããããããããšã§ãïŒç§»è¡ã®äœææã«ã¢ãã«ã®äžéšã§ã¯ãªãã£ãããïŒã
Code Firstã¯ã以åã®ç§»è¡ã®ã¢ãã«ãçŸåšã®ã¢ãã«ãšäžèŽããªãããšãæ€åºããèŠåã衚瀺ããŸãã
- ã¢ããªã±ãŒã·ã§ã³ãå®è¡ãããšãInvalidOperationExceptionãçºçããŸãããããŒã¿ããŒã¹ãäœæãããŠããããBloggingContextãã³ã³ããã¹ãããµããŒãããã¢ãã«ãå€æŽãããŸããã Code First Migrationsã䜿çšããŠããŒã¿ããŒã¹ãæŽæ°ããããšãæ€èšããŠãã ãã... "
ç¹°ãè¿ããŸãããåé¡ã¯ãã¢ãã«ã®ã¹ãããã·ã§ãããçŸåšã®ã¢ãã«ãšäžèŽããªãæåŸã®ç§»è¡ã«ä¿åãããããšã§ã
- æåŸã«ã Add-Migrationã®èµ·åã«ãã空ã®ç§»è¡ãçæããããšäºæ³ãããŸãïŒããŒã¿ããŒã¹ã«é©çšããå¿
èŠã®ããå€æŽããªãããïŒã ãã ãã移è¡ã§ã¯ãæåŸã®ç§»è¡ïŒ Ratingããããã£ãæããªãïŒã®1ã€ã§çŸåšã®ã¢ãã«ãæ¯èŒããããã Ratingåãè¿œå ããå¥ã®AddColumnåŒã³åºããçæãããŸãã
ãã¡ããã è©äŸ¡åãæ¢ã«ååšããããã Update-Databaseã§ã¯ãã®ç§»è¡ã¯å€±æããŸãã
競å解決ã®ããŒãž
幞ããªããšã«ã移è¡ã®ä»çµã¿ãç解ããŠããã°ãæåã§ç§»è¡ãããŒãžããããšã¯ããã»ã©é£ãããããŸããã ãã®èšäºã®åé ãèŠéããå Žåã¯...ç³ãèš³ãããŸããããæåã«æ»ã£ãŠèšäºã®æåã®éšåãèªãå¿ èŠããããŸãïŒ
2ã€ã®ãªãã·ã§ã³ããããŸãããæãç°¡åãªã®ã¯ãã¢ãã«ã®æ£ããã¹ãããã·ã§ãããæã€ç©ºã®ç§»è¡ãäœæããããšã§ãã 2çªç®ã®ãªãã·ã§ã³ã¯ãã¢ãã«ã®æ£ããã¹ãããã·ã§ãããååŸããããã«ãæåŸã®ç§»è¡ã§ã¹ãããã·ã§ãããæŽæ°ããããšã§ãã ããã¯ããå°ãè€éã§ããã®ãªãã·ã§ã³ã¯ãã¹ãŠã®å Žåã«äœ¿çšã§ããããã§ã¯ãããŸããã ãã®å©ç¹ã¯ãè¿œå ã®ç§»è¡ãè¿œå ããå¿ èŠããªãããšã§ãã
ãªãã·ã§ã³1ïŒç©ºã®ãããŒãžã移è¡ãè¿œå ãã
ãã®ãªãã·ã§ã³ã§ã¯ãæåŸã®ç§»è¡ã«ã¢ãã«ã®æ£ããã¹ãããã·ã§ãããä¿åãããããã«ã空ã®ç§»è¡ã®ã¿ãçæããŸãã
ãã®æ©èœã¯ãæåŸã®ç§»è¡ã®äœæè ã«é¢ä¿ãªã䜿çšã§ããŸãã ãã®äŸã§ã¯ãæåŸã®ç§»è¡ãçæããéçºè ïŒ2ãç£èŠããŸããã ãã ããéçºè ïŒ1ãæåŸã®ç§»è¡ãçæããå Žåããããã®åãæé ã䜿çšã§ããŸãã ãã®æé ã¯ãè€æ°ã®ç§»è¡ãããå Žåã«ãé©çšãããŸãã
次ã®ã¢ã«ãŽãªãºã ã¯ãããŒãžã§ã³ç®¡çã·ã¹ãã ãšåæããå¿ èŠãããå€æŽã衚瀺ãããç¬éãã䜿çšã§ããŸãã
- ããŒã«ã«ã³ãŒãããŒã¹ã®ãã¹ãŠã®ã¢ãã«å€æŽã移è¡ã§ä¿åãããŠããããšã確èªããŠãã ããã ãã®æé ã«ãããã¯ãªãŒã³ãªç§»è¡ãäœæãããšãã«éèŠãªå€æŽãèŠéãããšããªããªããŸãã
- ã³ãŒããããŒãžã§ã³ç®¡çã·ã¹ãã ãšåæãã
- Update-Databaseãå®è¡ããŠãä»ã®éçºè
ãè¡ã£ãæ°ãã移è¡ãé©çšããŸãã
æ³šïŒ Update-Databaseã®å®è¡äžã«èŠåã衚瀺ãããªãå Žåãä»ã®éçºè ããã®æ°ãã移è¡ã¯ãªããè¿œå ã®ããŒãžãå®è¡ããå¿ èŠã¯ãããŸããã
- Add-Migration <pick_a_name> -ignorechangesãå®è¡ããŸãïŒäŸïŒ add-migration merge -ignorechanges ïŒã ãã®ã³ãã³ãã¯ããã¹ãŠã®ã¡ã¿ããŒã¿ïŒçŸåšã®ã¢ãã«ã®ã¹ãããã·ã§ãããå«ãïŒã§ç§»è¡ãäœæããŸãããçŸåšã®ã¢ãã«ãæåŸã®ç§»è¡ã®ã¹ãããã·ã§ãããšæ¯èŒãããšãã«æ€åºããå€æŽãç¡èŠããŸãïŒã€ãŸãã空ã®Upã¡ãœãããšDownã¡ãœãããååŸããŸãïŒã
- éçºãç¶ããããããŒãžã§ã³ç®¡çã·ã¹ãã ã«å€æŽãéä¿¡ããŸãïŒãã¡ããåäœãã¹ããéå§ããåŸïŒã
ããã¯ããã®ã¢ãããŒããé©çšããåŸã®éçºè ã¢ãã«ïŒ2ã®ç¶æ ã§ãã

ãªãã·ã§ã³2ïŒææ°ã®ç§»è¡ã¢ãã«ã®ã¹ãããã·ã§ãããæŽæ°ãã
ãã®ãªãã·ã§ã³ã¯ãªãã·ã§ã³1ãšéåžžã«äŒŒãŠããŸãããäžèŠãªç©ºã®ç§»è¡ãåé€ããŸãã
ãã®ã¢ãããŒãã¯ãæåŸã®ç§»è¡ãããŒã«ã«ã«ã®ã¿ååšãããŸã ããŒãžã§ã³ç®¡çã·ã¹ãã ã«éä¿¡ãããŠããªãå ŽåïŒã€ãŸããæåŸã®ç§»è¡ãããŒãžãå®è¡ãããŠãŒã¶ãŒã«ãã£ãŠäœæãããå ŽåïŒã«å¯èœã§ãã ä»ã®éçºè ã䜿çšããããŸãã¯ããã«æªãããšã«æŠéããŒã¿ããŒã¹ã«é©çšããã移è¡ã¡ã¿ããŒã¿ãç·šéãããšãäºæããªãå¯äœçšãçºçããå¯èœæ§ããããŸãã ãã®ããã»ã¹ã§ã¯ãããŒã«ã«ããŒã¿ããŒã¹ãžã®æåŸã®ç§»è¡ãããŒã«ããã¯ããæŽæ°ãããã¡ã¿ããŒã¿ãåé©çšããŸãã
æåŸã®ç§»è¡ãããŒã«ã«ã§ããéãã移è¡ã®æ°ãé åºã«å¶éã¯ãããŸããã
åãæé ããè€æ°ã®ç°ãªãéçºè ããã®è€æ°ã®ç§»è¡ã«é©çšãããŸãã
ããŒãžã§ã³ç®¡çã·ã¹ãã ãšåæããå¿ èŠãããå€æŽã衚瀺ãããå Žåã次ã®ã¢ã«ãŽãªãºã ã䜿çšã§ããŸãã
- ããŒã«ã«ã³ãŒãããŒã¹ã®ãã¹ãŠã®ã¢ãã«å€æŽã移è¡ã§ä¿åãããŠããããšã確èªããŠãã ããã
ãã®æé ã«ãããã¯ãªãŒã³ãªç§»è¡ãäœæãããšãã«éèŠãªå€æŽãèŠéãããšããªããªããŸãã
- ã³ãŒããããŒãžã§ã³ç®¡çã·ã¹ãã ãšåæããŸãã
- Update-Databaseãå®è¡ããŠãä»ã®éçºè
ãè¡ã£ãæ°ãã移è¡ãé©çšããŸãã
æ³šïŒ Update-Databaseã®å®è¡äžã«èŠåã衚瀺ãããªãå Žåãä»ã®éçºè ããã®æ°ãã移è¡ã¯ãªããè¿œå ã®ããŒãžãå®è¡ããå¿ èŠã¯ãããŸããã
- Update-Database -TargetMigration <second_last_migration>ãå®è¡ããŸã ïŒãã®äŸã§ã¯ãããã¯Update-Database -TargetMigration AddRatingã«ãªããŸã ïŒã
ãã®ã¢ã¯ã·ã§ã³ã«ãããããŒã¿ããŒã¹ã¯ç§»è¡ã®æåŸã®1ã€ã®ç¶æ ã«ããŒã«ããã¯ãããŸããå®éã
ããŒã¿ããŒã¹ãžã®æåŸã®ç§»è¡ãé©çšãããªãã£ãå Žåã
泚ïŒã¡ã¿ããŒã¿ã¯ããŒã¿ããŒã¹ã®__MigrationsHistoryããŒãã«ã«ãä¿åãããããããã®ã¹ãããã¯ç§»è¡ã¡ã¿ããŒã¿ãå®å šã«ç·šéããããã«å¿ èŠã§ãã ãã®ãããæåŸã®ç§»è¡ãããŒã«ã«ã®ã¿ã§ããå Žåã«ã®ã¿ããã®æ©èœã䜿çšããå¿ èŠããããŸãã æåŸã®ç§»è¡ãä»ã®ããŒã¿ããŒã¹ã«é©çšããå¿ èŠãããå Žåã¯ããããããŒã«ããã¯ããæåŸã®ç§»è¡ãåé©çšããŠã¡ã¿ããŒã¿ãæŽæ°ããå¿ èŠããããŸãã
- Add-Migration <full_name_include_timestamp_of_last_migration>ãå®è¡ããŸãïŒãã®äŸã§ã¯ã Add-Migration 201311062215252_AddReaders migration add -onsã®ããã«ãªããŸãïŒã
泚ïŒæ°ãã移è¡ãäœæããã®ã§ã¯ãªããæ¢åã®ç§»è¡ãå€æŽããããšã移è¡ãšã³ãžã³ãç解ã§ããããã«ãã©ãã«ãæå®ããå¿ èŠããããŸãã ããã«ãããçŸåšã®ã¢ãã«ã«åãããã«ææ°ã®ç§»è¡ã®ã¡ã¿ããŒã¿ãæŽæ°ãããŸãã ã³ãã³ããå®äºãããšã次ã®èŠåã衚瀺ãããŸãããããã¯ãŸãã«ããªããæããã®ã§ãã ã移è¡çšã®ãã¶ã€ããŒã³ãŒã '201311062215252_AddReaders'ã®ã¿ãåã¹ãã£ãã©ãŒã«ããããŸããã 移è¡å šäœã®è¶³å Žãåèšå®ããã«ã¯ã-Forceãã©ã¡ãŒã¿ãŒã䜿çšããŸãã - Update-Databaseãå®è¡ããŠãæŽæ°ãããã¡ã¿ããŒã¿ã§ææ°ã®ç§»è¡ãåé©çšããŸãã
- éçºãç¶ããããããŒãžã§ã³ç®¡çã·ã¹ãã ã«å€æŽãéä¿¡ããŸãïŒãã¡ããåäœãã¹ããéå§ããåŸïŒã
ããã¯ããã®ã¢ãããŒããé©çšããåŸã®éçºè ïŒ2ã®ããŒã«ã«ã³ãŒãããŒã¹ã®ç¶æ ã§ãã

åèš
ããŒã ã§Code First移è¡ã䜿çšããå Žåãããã€ãã®åé¡ããããŸãã ãã ãã移è¡ã®ä»çµã¿ã«é¢ããäžè¬çãªç解ãšãããŒãžã®ç«¶åã解決ããããã®ããã€ãã®ç°¡åãªã¢ãããŒãã«ããããããã®åé¡ãç°¡åã«å æã§ããŸãã
åºæ¬çãªåé¡ã¯ãæåŸã®ç§»è¡ã§ä¿åããã誀ã£ãã¡ã¿ããŒã¿ã§ãã ããã«ãããCode Firstã¯çŸåšã®ã¢ãã«ãšããŒã¿ããŒã¹ã¹ããŒããäžèŽããªãããšã誀ã£ãŠå€æãã次ã®ç§»è¡ã®ããã«èª€ã£ãã³ãŒããçæããŸãã ãã®ç¶æ³ã¯ãæ£ããã¢ãã«ã§ç©ºã®ç§»è¡ãçæããããææ°ã®ç§»è¡ã§ã¡ã¿ããŒã¿ãæŽæ°ããããšã§ä¿®æ£ã§ããŸãã