Как я могу реализовать 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();