tekitoumemo’s diary

思ったことを書くだけ。長文版Twitter

FluentMigratorからgooseに移行した

olcarのマイグレーションをFluentMigratorからgooseに移行した。

 

経緯

 

Dapperを使っていることからEF Coreのマイグレーションだけを利用するということが嫌だったので.NET用のマイグレーションFluentMigratorを使っていた。クエリビルダーなどC#との親和性が高く使いやすかった。

 

問題

 

PlanetScaleに移行した際にFluentMigratorが動かなくなった。元々MySQL5までのサポートしかしてなかったのでかろうじて動いてたという感じだったがPlanetScaleのMySQLのバージョンに対応しなくなってしまった。開発も2年前で止まっているし、もう捨てても良いかなという判断にした。

 

選定

 

選定基準としてC#と親和性のあるものを探していた。

 

- EF Core

MS謹製のORマッパー。全部入り。機能モリモリ。

 

- DbUp

.NETでは人気っぽい。今も開発はされており、MySQLもサポートしてる。SQLビルダーはなさそう?ドキュメントが読みづらいし使いづらそう

 

という感じで自分の求める条件に一致するのがEF Coreのみ。大人数で開発するのであればEF Coreという選択肢もありだが、マイグレーションだけ使うのも微妙だし、そもそも使いづらそう。ということでC#のライブラリは選定対象から外した。

 

結論

GO製のマイグレーション、gooseにした。選定理由はめちゃくちゃシンプル、人気だから。Go製のマイグレーションは使いやすいものが多い印象。GoもORマッパーが微妙らしいのでこのようなライブラリが多いのかもしれないけど。

 

 

おわりに

 

.NETのORマッパー周りはかなり酷いと思う。.NETの後方互換性は最強クラスだけど他が弱すぎるから勧められない言語の一つ