私たちはマイグレーションをリセットすることにしましたが、今度はリセットすることにしました。-EnableAutomaticMigrations
オプションを入れないと、Enable-Migrations
は動作しません。 私の接続文字列は、スタートアッププロジェクトとして設定されているWebプロジェクトにあります。自動コード移行を有効にしている場合にのみ、コード移行を有効にすることはできますか?
これは、我々が取った手順は以下のとおりです。
まず
は、我々は完全に移行フォルダとデータベースを削除しました。その後 我々が行うと:enable-migrations
は、我々が得る:コンテキストは、既存のデータベースをターゲットにしている場合
は確認しています...
現在のモデルに一致するようにデータベースを更新することができません
が保留されているので、 が変更され、自動移行が無効になります。保留中の モデル変更をコードベースの移行に書き込むか、自動移行を有効にします。 DbMigrationsConfiguration.AutomaticMigrationsEnabledをtrueに設定して に自動移行を有効にします。
私はこのエラーを理解していません。データベースはありません。移行されていないため、保留中の変更は参照されますか?その後、我々が行う場合
(私もgitの中chanvesを保留持っていけない)
enable-migrations -EnableAutomaticMigrations
それは動作しますが、我々がそれに従うとき:
Add-Migration InitialCreation
それは、空InitialCreationの移行を作成し私のモデルに対応するテーブルを使ってデータベースを作成します。しかし、これを行う最初にデータベースを作成するためのスクリプトを取得することはできません。私は何が起こっているのか分からない。 初めて自動移行を使用するようです。
なぜできないenable-migrations
-EnableAutomaticMigrations
なし?
更新
スティーブ・グリーンと話した後、私は私のDbContextと初期化子
public class ApplicationDatabaseContext : DbContext
{
public ApplicationDatabaseContext()
: base("MyConnectionStringName")
{
Database.SetInitializer<ApplicationDatabaseContext>(new ApplicationDataInitializer());
if (!Database.Exists())
{
Database.Initialize(true);
}
}
そして、私のDatabaseInitializerの一部を追加することが有用であると思う:
まずpublic class ApplicationDataInitializer : CreateDatabaseIfNotExists<ApplicationDatabaseContext>
{
protected override void Seed(ApplicationDatabaseContext context)
{
base.Seed(context);
CreateData(context);
}
private void CreateData(ApplicationDatabaseContext context)
{
//Add data here
context.SaveChanges();
}
}
私たちはCreateDatabaseIfNotExist初期化子を持っています。私はEFと移行の新人で、フォルダ全体を削除したMicrosoftチュートリアルを見ると、それが私たちがやった理由です。また、マイグレーションをリセットするアドバイスもいくつありますか。 CreateDatabaseIfNotExist initliazerを使用しているときに、MigrateDatabaseToLatestVersionをどのように設定しますか? – Dzyann
あなたは両方を必要としません。 MigrateDatabaseToLatestVersionは、ベースラインの最初の移行を行っている限り、存在しない場合はデータベースを作成します。コンテキストの静的コンストラクタに配置します。 –
こんにちはSteve、DbContextコンストラクタとInitializerを投稿に追加しました。私たちはこれまでと同じことをしていましたが、EFの移行をリセットする問題はありませんでした。そして今、突然のことはもう働きません。 – Dzyann