質問: ドキュメントに従って`enum`をエンティティフレームワークに追加し、NPGSQLに登録しました。 ``` static DataContext() { NpgsqlConnection.GlobalTypeMapper.MapEnum(); } protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.ForNpgsqlHasEnum(); ... } ``` 移行を実行してWebアプリケーションを起動した後、次の例外がスローされます。 > CLR列挙型MyEnumは、使用する前にNpgsqlに登録する必要があります。ドキュメントを参照してください > > アプリケーションを再起動すると、 `MyEnum`に機能します。これは、 `MyEnum`が追加された移行が適用された直後にのみ発生します。
回答: 問題は、移行の発生後にNPGSQLのタイプマッピングがデータベースと同期しなくなり、移行の実行後にタイプを再ロードする必要があることです。 これは、 `Migrate()`呼び出した後に`ReloadTypes()`を呼び出すことで修正できます。 ``` public void Migrate() { Database.Migrate(); using (var connection = (NpgsqlConnection)Database.GetDbConnection()) { connection.Open(); connection.ReloadTypes(); } } ```