Как я могу реализовать DBSet.AddOrUpdate в Entity Framework 4.4?

В ответ на ответ Slauma на мой вопрос о запуске приложений, использующих EF в Windows XP, я конвертирую свое приложение из Entity Framework 5.0 для использования Entity Framework 5.0 и target framework.NET 4.0 (также называемая Entity Framework 4.4)

Однако я столкнулся со следующей ошибкой:

System.Data.Entity.DbSet<MyEntity> does not contain a definition for AddOrUpdate 
and no extension method of a type System.Data.Entity.DbSet<MyEntity> accepting a 
first argument of type System.Data.Entity.DbSet<MyEntity> could be found.
(Are you missing a using directive or assembly reference )

Я попытался найти фрагменты этого сообщения об ошибке, но у меня не было большого успеха. Странно 4.4 даже не упоминается в этой ссылке Microsoft Существует даже тег SO для EF4.4

Ответ 1

Вы должны добавить...

using System.Data.Entity.Migrations;

... в ваш файл кода, чтобы иметь AddOrUpdate. Это метод расширения IDbSet<T>, который реализован в классе IDbSetExtensions в пространстве имен System.Data.Entity.Migrations.

Ответ 2

Когда вы включить миграцию для веб-приложений MVC5, вы получите следующий комментарий в методе Seed конфигурации:

//  You can use the DbSet<T>.AddOrUpdate() helper extension method 

Мой начальный удар в этом был для пользователя DbSet<MyEntity>.AddOrUpdate(). Это приведет к тому же сообщению об ошибке (и это правильно), как тот, который поднят в этом вопросе. Исправление состоит в том, чтобы прочитать остальную часть комментария и использовать параметр контекста, переданный в функцию Seed:

    context.MyEntity.AddOrUpdate();