среда, 30 сентября 2015 г.

Entity Framework Перезагрузить только что созданный объект/перегрузить навигационные свойства

Окружение

ASP.NET MVC 4 приложение, EntityFramework 6

Проблема

Не получается перезагрузить обновленные свойства объекта из базы данных и навигационные свойства


Сценарий использования

Обрабатываю в контроллере Post-запрос на создание объекта. Объект передается параметром в Экшене.
как обычно я делаю

...
проверки
сохранение объекта
дополнительные действия после сохранения
...

С клиента новый объект приходит "чистым"/ т.е. без навигационных свойств.
Его я и добавляю в контекст и сохраняю.
После сохранения я хочу провести дополнительную обработку в которой мне нужны навигационные свойства, но проблема в том, что EF кеширует объект и повторная загрузка не приводит к обновлению навигационных свойств. Они остаются пустыми.

Решение

Перед тем как считать обновленный объект его нужно отсоединить от контекста.

У меня получилось сделать это так:

public void Detach(T entity)
{
            ((IObjectContextAdapter)_db).ObjectContext.Detach(entity);
}

Решение нашел здесь
Entity Framework Code First - No Detach() method on DbContext
http://stackoverflow.com/questions/4168073/entity-framework-code-first-no-detach-method-on-dbcontext

Ссылки по теме


Entity Framework Code First - No Detach() method on DbContext
http://stackoverflow.com/questions/4168073/entity-framework-code-first-no-detach-method-on-dbcontext

Reload an entity and all Navigation Property Association- DbSet Entity Framework
http://stackoverflow.com/questions/9081244/reload-an-entity-and-all-navigation-property-association-dbset-entity-framework

How to update an entity's navigation properties in Entity Framework
http://stackoverflow.com/questions/10542209/how-to-update-an-entitys-navigation-properties-in-entity-framework

Entity Framework POCO - Refresh a navigation property
http://stackoverflow.com/questions/3839166/entity-framework-poco-refresh-a-navigation-property



Комментариев нет:

Отправить комментарий