1

私は最初にMVC5、EF5.0コードで開発しています。ファイル共有フォルダーを使用してプロジェクトを公開します。

モデルが変更されたときに、データベースの移行を使用して、開発中のlocalDbを更新できます。ただし、プロジェクトをリモートサーバーに公開した後、完全なSQLデータベースサーバーを使用する本番Webサーバーでモデルが変更されて移行が必要になるというエラーが表示されます。

本番サーバー上のデータベースを削除して、データベースを再作成できることはわかっています。ただし、テーブルにはすでにユーザーが入力したデータがあります。

データベースを再作成せずにモデル/データベースの変更を適用する方法はありますか?

4

2 に答える 2

5

はい、方法があります。実際にはいくつかあります。

  • 本番データベースに適用できるSQLスクリプトを生成できます。次のように-Scriptフラグを指定してパッケージマネージャーコンソールでUpdate-Databaseを実行します。

    Update-Database -Script -SourceMigration:InitialMigration -TargetMigration:LatestMigration

    または、Red GateSQLCompareなどのツールを使用してスクリプトを生成します。

  • アプリケーションの起動時に、MigrateDatabaseToLatestVersionデータベース初期化子を登録することにより、データベースを自動的にアップグレードできます。

    Database.SetInitializer(new MigrateDatabaseToLatestVersion());

両方の方法の詳細については、MSDN-CodeFirstMigrationsの記事を参照してください。

于 2013-02-25T08:00:17.967 に答える
0

本番環境でデータベースを削除するオプションはありませんでした。最初のEFコードはその目的ではなく、開発専用です。

いくつかのオプションがあります。VisualStudioUltimateを使用する場合は、SQLメニューの下にスキーマ比較ツールがあります。または、RedGateSQL比較ツールを使用することもできます。

于 2013-02-24T22:31:34.277 に答える