私はEntity Framework 6でアプリケーションをビルドし、データベースから抽出データを挿入するためのいくつかのメソッドを作成したので、今は本番環境とデバッグ環境。Entity Framework 6を使用して生成された2つの同じデータベース
デバッグ用データベースは、テスト用にすべてのデータを消去する必要がありますが、制作時にデータを保持する必要があります。
私は2つのプロジェクトがあります。MyApp.Database
とMyApp.Database.Test
を、そして彼らには、それぞれapp.config
-fileで、接続文字列、ようにプログラムをロードしてい:
public DatabaseContext() : base("name=MyDB")
{
System.Data.Entity.Database.SetInitializer<DatabaseContext>(new CreateDatabaseIfNotExists<DatabaseContext>());
}
と、接続文字列、database
パラメータをMyProdDB
とMyTestDB
に設定:
<connectionStrings>
<add name="MyDB" connectionString="Host=localhost;user id=myUser;password=myPassword;database=MyProdDB" providerName="Npgsql" />
</connectionStrings>
私は、アプリケーションを実行し、テストを実行すると、私はタイプごとに正しい接続文字列を取得しますデータベースの。 テストを実行するとエラーが発生します: 42P01: relation "dbo.Tags" does not exist
簡単なメッセージです。データをテストデータベースに移行していないと言っています。
しかし、テストデータベースに移行するにはどうすればよいですか?
私はPackage manager Console
でテストプロジェクトを選択しようとしたし、次のコマンドを実行している:
PM> Add-Migration "Init"
No migrations configuration type was found in the assembly 'MyApp.Database.Test'. (In Visual Studio you can use the Enable-Migrations command from Package Manager Console to add a migrations configuration).
PM> Update-Database
Specify the '-Verbose' flag to view the SQL statements being applied to the target database.
No migrations configuration type was found in the assembly 'MyApp.Database.Test'. (In Visual Studio you can use the Enable-Migrations command from Package Manager Console to add a migrations configuration).
PM> Enable-Migrations
No context type was found in the assembly 'MyApp.Database.Test'.
は、私はほとんどMyApp.Database
のレプリカであるMyApp.Database.Test
のための私自身のDbContext
クラスを指定する必要がありますか?
を見て - PRODとDEVを。 IACを使用している場合は、移行が行われる単一のプロジェクトでコンテキストを必要としている可能性があります。 PRODを更新するには、コンテキスト・プロジェクト内の接続文字列をPRODを指すように切り替えて、移行を実行するか、スクリプトを生成して他のデータベース「update-database -Script」を更新できます。 –
同じ環境の統合テストが必要です。私はPRODでデータを失いたくはありません - DEVのみで。私のPRODは最新であり、必要なときに機能します。 '' Update-Database -Script''を実行しようとすると、私は明示的な移行が保留中ではないと言います。すべての移行を0から行うように頼むことはできますか? –
私は: '' Update-Database -Script -SourceMigration:0''ということができます。それが私にかかっているところを見てみましょう... –