開発者が行をコミットするかしないかを覚えておくように頼っているのなら、あなたはこれを間違っていると思います。
web.configまたはapp.configで設定して、初期化をコードから切り離すことを検討する必要があります。app.configにweb.configトランスフォーメーションまたはSlowCheetahを使用すると、デバッグ、テスト、本番などの構成ごとにトランスフォーメーションが作成されます。
次に、Web.Debug.Configで、その構成に使用する初期化子を指定します。
<configSections>
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
<contexts>
<context type="Company.Product.Infrastructure.BoundedContext, Company.Product.Infrastructure" disableDatabaseInitialization="false" xdt:Transform="Replace">
<databaseInitializer type="Company.Product.Infrastructure.DatabaseInitializers.DebugDatabaseInitializer, Company.Product.Infrastructure" />
</context>
</contexts>
</entityFramework>
他の構成の場合は、上記の構成のを置き換えて、//entityFramework/contexts/context/databaseInitializer/@type
別のデータベース初期化子を使用します。これにより、デバッグにはDropCreateDatabaseAlwaysを使用し、テストにはDropCreateDatabaseIfModelChangesを使用し、本番環境の初期化を無効にすることができます。
テストとして、コードと.configの両方にデータベースの初期化を追加しようとしましたが、.configが優先されます。