まず、これは前に尋ねられたはずですが、グーグルで正確な答えを見つけることができなかったことは確かです。Entity Framework:列を追加するにはシードデータを変更する必要がありますか?
私は、移行を使用するコードの最初のエンティティフレームワークプロジェクトを継承しています。私は、テーブルに(null非許容)のカラムを追加しましたし、私はすべての既存のエントリに対してこの列に値を挿入する必要がある - 既定値ではありません。追加いくつかのシード・データが
public override void Up()
{
AddColumn("dbo.QuestionType", "Duplicated", c => c.Boolean(nullable: false, defaultValue: false));
Sql("UPDATE dbo.QuestionType SET Duplicated = 1");
}
がしかし、もともとありましたこの表に:更新ステートメントを直ちに(各移動後に呼ばれる)シードメソッドへのコールのデータによって上書きされることを意味する
context.QuestionTypes.AddOrUpdate(
e => e.Name,
new QuestionType() { Name = QuestionTypeNames.INTERVIEWER});
。
私の質問は以下のとおりです。
- は、それが単にシードデータに付加価値を追加する(あるいはこのすべてが新しい列が上に存在しない以前の移行のために壊すことになります「安全」ですデータベース)。
- また、この移行(およびそれ以降のすべての移行)後にSeedメソッドが実行されないようにする方法があります。
おかげ
これを確認していただきありがとうございます。マイグレーションが適用されているかどうかを確認することはできませんでした。 Seedメソッドに追加されたデータをより詳細に調べてみると、何らかのデータ(ハードコードされたパスワードなど)は存在しないはずです。そのため、私の最善の策はシードからデータを削除することですメソッドを完全に... –
Seed()を実行する前に移行が適用されるため、重複は常に存在します。 –