Преобразовать объект POCO в объект Proxy в EntityFramework - PullRequest
4 голосов
/ 18 ноября 2011

У меня есть проект MVC3, и я столкнулся с проблемой.У меня есть контроллер Create, который принимает в качестве параметра один из моих объектов POCO.Я добавляю этот объект в базу данных следующим образом:

  entity = dbSet.Add(entity);

После возврата из этого метода я хотел бы использовать функции отложенной загрузки объекта.К сожалению, объект не является объектом Proxy, созданным EntityFramework ... Есть ли способ как-то решить эту проблему?

Спасибо, AFrieze

1 Ответ

5 голосов
/ 18 ноября 2011

Объект должен быть уже прокси, когда вы передаете его методу Add. Add метод не будет возвращать другой экземпляр класса, и вы не можете изменить тип существующего экземпляра на тип прокси.

Ваши варианты:

  • Не использовать сущность в качестве входных данных в контроллере - использовать некоторую модель представления и заполнить новую сущность, созданную dbSet.Create - это создаст пустой прокси-объект отделенной сущности.
  • Вместо добавления объекта, полученного в контроллере, создайте новый с помощью dbSet.Create и скопируйте данные из полученного в созданный
  • Не используйте связыватель модели по умолчанию. Создайте пользовательский механизм связывания модели (то есть код, отвечающий за извлечение данных из HTTP-запроса и заполнение параметров, передаваемых в контроллер), который будет использовать dbSet.Create вместо конструктора объекта по умолчанию.
...