5

エンティティ フレームワーク アプリケーションの移行を有効にしました。ここで、リモート サーバー上のデータベースを更新したいと考えています。このコマンドを実行しました:

PM> Update-Database -Script 

したがって、SQLスクリプトが生成されました。ただし、このスクリプトには、データベースに実際にあるすべてのメタデータが含まれており、加えられた変更は含まれていません。そのため、リモート サーバーでこの SQL スクリプトを実行しようとすると、テーブルが既に存在すると表示されます。

必要な更新のみを含む SQL スクリプトを生成するにはどうすればよいですか?

4

3 に答える 3

7

これには、特定の移行を対象にすることができます。たとえば、Foo という移行がある場合:

Update-Database -TargetMigration Foo -Script

Foo 移行用の移行スクリプトが生成されます。Foo を、そのサーバーで実行する必要がある移行に置き換えます。

Add-Migration InitialMigration
Add-Migration AddCustomers
Add-Migration AddProjects

プロジェクトに上記の 3 つの移行があり、ローカル データベースにはそれらがすべて適用されているが、リモート データベースには InitialMigration しかないとします。以下を実行できます。

Update-Database -SourceMigration InitialMigration -TargetMigration AddProjects -Script

これにより、リモート サーバーに 2 つの移行が適用されます (AddCustomers と AddProjects)。

于 2013-02-19T17:17:32.133 に答える
2

リモート デスクトップ経由でサーバーにアクセスできる場合は、通常 [projectFolder]/packages/EntityFramework.5.0.0/tools/migrate.exe にあるコマンド ライン移行ツールを実行できます。

そして、次のように呼び出します。

Migrate.exe [StartupProjectName] /StartupDirectory:"[BIN folder path]" /ConnectionStringName:"[Connection String Name]" /StartupConfigurationFile:"[Path to web or app.config]"
于 2013-02-20T03:25:48.803 に答える
1

MigrateDatabaseToLatestVersion 初期化子を使用して、アプリケーションの新しいバージョンをデプロイするときに新しい移行を自動的に適用できます。

Database.SetInitializer(new MigrateDatabaseToLatestVersion<MyDbContext, Configuration>());
于 2015-01-07T15:50:18.183 に答える