Не удается заставить приложение ApplyCurrentValues ​​(Entity) работать в Entity Framework 5

Товарищи, может ли кто-нибудь помочь мне здесь, сущность framework 5, похоже, не имеет метода ApplyCurrentValues ​​(). Есть ли другой способ обновить объект базы данных в сущности framework v5. вот что я пытаюсь сделать

odc.Accounts.Attach(new Account { AccountID = account.AccountID });
  odc.Accounts.ApplyCurrentValues(account);
  odc.SaveChanges();

Но я получаю ошибку компиляции в строке ApplyCurrentValues ​​()

5
nl ja de

1 ответы

ApplyCurrentValues is an ObjectContext API method, so first you have to gain access to the objectcontext that is wrapped in the DbContext:

odc.Accounts.Attach(new Account { AccountID = account.AccountID });
((IObjectContextAdapter)odc).ObjectContext
    .ApplyCurrentValues("Accounts", account);
odc.SaveChanges();

Обратите внимание, что в обернутом контексте нет таких элементов, как «Учетные записи», поэтому вам нужно использовать метод ObjectContext .

Но вы можете сделать то же самое с помощью DbContext API:

var sourceAcc = new Account { AccountID = account.AccountID });
odc.Entry(account).CurrentValues.SetValues(sourceAcc);
13
добавлено
Хороший ответ. Я просто заметил, что ApplyCurrentValues ​​ возвращает sourceAcc с Модифицированным или Без изменений в зависимости от случая. Он ничего не делает с экземпляром account , который по-прежнему Отключен . Я думаю, что это явно показано. Я также немного смущен именами переменных. В примере с EF5 account представляет объект из базы данных. Ранее он представлял собой отдельный.
добавлено автор Ryszard Dżegan, источник
Я думаю, что вы случайно начали использовать API DbContext при переключении на EF 5. Проверьте базовый тип переменной odc .
добавлено автор Gert Arnold, источник
Спасибо @Gert, код работает сейчас, но почему он не работает в EF 5, но работает в версии 4 и ниже?
добавлено автор Cizaphil, источник
DotNetRuChat
DotNetRuChat
2 992 участник(ов)

Чат русскоязычного .NET сообщества http://dotnet.ru/ Вам могут быть интересны: @dotnetchat, @cilchat, @fsharp_chat, @pro_net, @xamarin_russia, @microsoftstackjobs, @uwp_ru Флуд в @dotnettalks

Microsoft Stack Jobs
Microsoft Stack Jobs
1 788 участник(ов)

Work & freelance only Microsoft Stack. Feed https://t.me/Microsoftstackjobsfeed Чат про F#: @Fsharp_chat Чат про C#: @CSharpChat Чат про Xamarin: @xamarin_russia Чат общения:@dotnettalks

pro.net
pro.net
710 участник(ов)

Обсуждение .NET Framework и всего, что с ним связано. Правила: не флудить не по теме, уважать ваших коллег и никакой рекламы (объявления о вакансиях можно согласовать с @AlexFails). Флудилка: @dotnettalks Участник @proDOT

Microsoft Developer Community Chat
Microsoft Developer Community Chat
584 участник(ов)

Чат для разработчиков и системных администраторов Microsoft Developer Community. __________ Новостной канал: @msdevru __________ Баним за: оскорбления, мат, рекламу, флуд, флейм, спам, NSFW контент, а также большое количество оффтоп тем. @banofbot

.NET Talks: Force Push Masters
.NET Talks: Force Push Masters
490 участник(ов)

Свободный чат .NET разработчиков. Правила: t.me/dotnettalks/56823 Вам могут быть интересны: @dotnetruchat, @dotnetchat, @cilchat, @fsharp_chat, @pro_net, @dotnetgroup, @xamarin_russia, @microsoftstackjobs, @uwp_ru http://combot.org/chat/-1001128250813

.NET Chat Убежище
.NET Chat Убежище
246 участник(ов)

Чат .NET разработчиков под эгидой MSK/SPB .NET Community Group Вам могут быть интересны: @fsharp_chat, @dotnetruchat, @cilchat, @xamarin_russia, @microsoftstackjobs, @dotnetgroup Флуд в @dotnettalks

.NET CIL Chat
.NET CIL Chat
54 участник(ов)

.NET CIL (aka IL aka MSIL)