CodeFirstMigrationsでEntityFramework5を使用しています。私ができるようにしたいのは、ビルド構成に応じて異なるシードデータを指定することです。例えば:
protected override void Seed(EFDbContext context)
{
// This will be run in every Build configuration
context.Table1.AddOrUpdate(new Table1 { Field1 = "Foo", Field2 = "Bar" });
#if DEBUG
// This will only be executed if we are Debuging
context.Table1.AddOrUpdate(new Table1 { Field1 = "Blah", Field2 = "De Blah" });
context.Table2.AddOrUpdate(new Table2 { Field1 = "Development Only" });
}
コードがおそらく間違っていることはわかっています。これを行うための最適なルートがわかれば、正しいメソッド呼び出しを見つけることができます。
EFには、この種のことを行うために私が見逃した組み込みのメソッドがありますか?
ありがとう
アップデート
最後に使用したコードは次のとおりです。
protected override void Seed(EFDbContext context)
{
// This will be run in every Build configuration
context.Table1.AddOrUpdate(t = t.Field1, new Table1 { Field1 = "Foo", Field2 = "Bar" });
#if DEBUG
// This will only be executed if we are Debuging
context.Table1.AddOrUpdate(t = t.Field2, new Table1 { Field1 = "Blah", Field2 = "De Blah" });
context.Table2.AddOrUpdate(t = t.Field1, new Table2 { Field1 = "Development Only" });
#endif
}
Yannickが言ったとおりでしたが、AddOrUpdateメソッドでは、EFが新しいエントリであるかどうかを確認するために使用するフィールドを渡す必要があります。私の質問の一部ではありませんが、将来の参考のために正しい方法を提供する必要があると思いました。