EF5 にコード ファーストのエンティティ モデルがあります。しかし、データベースの変更を手動で管理したいのですが、既存のデータベースとそのすべてのデータを EF に変更させたくありません。しかし、EF マッピングとデータベースに並行して変更を加えると、EF は適切に動作することを拒否し、コード ファースト マイグレーションを使用する必要があると通知します。これをオフにするにはどうすればよいですか?
99024 次
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
したがって、私が見つけた最も完全な答えは次のとおりです。
Migrations
プロジェクト内のフォルダーを削除します。Database.SetInitializer<DatabaseContext>(null);
DatabaseContext 初期化子内で設定します。- データベース内のテーブルを削除し
__MigrationHistory
ます。EF6+ の場合、テーブルは の下にありますTables
が、以前のバージョンの場合は の下にありSystem Tables
ます。 - ビルドして実行します。
- 利益。
于 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 に答える