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

в ответ на ответ Slauma на мой вопрос о запущенных приложениях, использующих EF в Windows XP Я конвертирую свое приложение обратно из Entity Framework 5.0 для использования Entity Framework 5.0 и целевой платформы .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

2 ответов


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

using System.Data.Entity.Migrations;

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


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

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

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

    context.MyEntity.AddOrUpdate();