89

EF5 にコード ファーストのエンティティ モデルがあります。しかし、データベースの変更を手動で管理したいのですが、既存のデータベースとそのすべてのデータを EF に変更させたくありません。しかし、EF マッピングとデータベースに並行して変更を加えると、EF は適切に動作することを拒否し、コード ファースト マイグレーションを使用する必要があると通知します。これをオフにするにはどうすればよいですか?

4

5 に答える 5

105

Database.SetInitializer を null に設定します。

public class DatabaseContext: DbContext
{
    //the base accepts the name of the connection string provided in the web.config as a parameter
    public DatabaseContext()
        : base("DatabaseContext")
    {
        //disable initializer
        Database.SetInitializer<DatabaseContext>(null);
    }
于 2015-04-01T15:26:00.493 に答える
44

したがって、私が見つけた最も完全な答えは次のとおりです。

  1. Migrationsプロジェクト内のフォルダーを削除します。
  2. Database.SetInitializer<DatabaseContext>(null);DatabaseContext 初期化子内で設定します。
  3. データベース内のテーブルを削除し__MigrationHistoryます。EF6+ の場合、テーブルは の下にありますTablesが、以前のバージョンの場合は の下にありSystem Tablesます。
  4. ビルドして実行します。
  5. 利益。
于 2016-11-11T08:06:16.563 に答える
28

移行を完全にオフにする場合:

https://stackoverflow.com/a/9709407/141172

ただし、コード ファーストの移行を有効にしておく方が良いことがわかりましたが、-Scriptオプションを使用して、各データベース (開発、QA、運用) に手動で適用できる DB 変更スクリプトを EF に作成してもらいます。

Update-Database -Script -ProjectName MyProject -StartupProjectName MyProject

そうすれば、EF が変更スクリプトを作成し、適用される変更を完全に制御できます。他のソース コードと同様に、変更スクリプトをバージョン管理します。

于 2013-02-01T20:02:10.703 に答える
26

既に Migrations を使用している場合は、Initializer のみを変更しても役に立ちません。Management Studio に移動し、データベース テーブルを開き、System Tablesフォルダーに移動して__MigrationHistory、そこにあるテーブルを削除する必要があります (EF6 以降の場合は、 の直下にありますTables)。これにより、移行が完全に無効になります。

于 2013-08-08T09:13:55.220 に答える