1

構成ファイルは次のとおりです。

internal sealed class Configuration : DbMigrationsConfiguration<Context>
{
    public Configuration()
    {
      AutomaticMigrationsEnabled = true;
    }

    protected override void Seed(Context context)
    {
        //my seeding DB, here's an example
        context.HomePageAreas
          .AddOrUpdate(new HomePageArea { Title = HomePageArea.TopAreaKey });
    }
}

アプリケーションの起動:

Database.SetInitializer<Context>(
  new MigrateDatabaseToLatestVersion<Context, Configuration>());

using (var context = new Context())
  context.Database.Initialize(false);

次にDbEntityValidationException、追加された行ごとに (2 回目の起動以降)を取得します。

{0}: '{0}' フィールドが '{2}' に設定されている '{1}' レコードが既に存在します。

4

1 に答える 1

1

識別子式を指定していないため、EF は主キーで比較しています (オブジェクト初期化子には表示されません)。

ID が既知の場合は指定するか、別の式を使用してください。例えば:

context.HomePageAreas
       .AddOrUpdate(x => x.Title,
                    new HomePageArea { Title = HomePageArea.TopAreaKey });

この場合、 によって既存のレコードと一致しTitleます。

于 2012-12-03T15:56:16.700 に答える