Выгрузка ссылки на данные в Entity Framework - PullRequest
4 голосов
/ 21 мая 2009

В настоящее время я борюсь с проблемой Entity Framework. У меня есть служба wcf, которая находится поверх платформы ef и разрешает запросы к инфраструктуре. В какой-то момент пользователь может запросить файл из фреймворка. На файлы ссылаются записи решения, поэтому при запросе файла из решения ссылка загружается для получения доступа к хранилищу файлов.

Это все работает нормально, но с этого момента, когда вы делаете другой запрос, который возвращает эту запись решения, весь файл присоединяется к возвращаемому результату. Мне нужен какой-то способ отсоединения или выгрузки ссылки, чтобы записи результатов снова содержали только выгруженную ссылку на хранилище файлов.

Я пытался создать новый контекст и запросить этот контекст для извлечения информации, но когда я это делаю, сущность в исходном контексте также изменяется.

Я попытался отделить сущность от исходного контекста, а затем выполнить запрос из нового контекста. Это тоже не работает.

Я нашел один способ сделать это. Для всех запросов, не связанных с загрузкой файлов, я отсоединяю результирующую сущность и отправляю ее по сети. Хотя я не уверен, что это лучший способ сделать это.

Я надеюсь, что кто-то сможет дать некоторое представление, спасибо за усилия.

1 Ответ

0 голосов
/ 09 февраля 2012

Возможно, вы столкнулись с проблемой Отслеживание изменений , которая включена по умолчанию.

Возможное решение:

Отключить отслеживание изменений с помощью MergeOption.NoTracking

using (MyEntities _context = new MyEntities())
{
    _context.Widgets.MergeOption = MergeOption.NoTracking;

    return _context.Widgets.ToList();

}

Эта статья может помочь вам в правильном направлении решить, как решить эту проблему, если вышеуказанное решение не работает.

Недавно я боролся с подобной проблемой. Проблема заключалась в том, что контекст поддерживал ссылку на объект, который я использовал (очевидно). Каждый раз, когда я вносил изменения в объект того же типа, даже когда он получался с новым контекстом (так я думал), объект менялся.

С помощью одного из моих коллег, мы определили, что контекст зависал из-за того, как я регистрировал его в своем контейнере IoC (образ жизни на веб-запрос). Когда я изменил образ жизни на переходный (что определенно предоставило новый экземпляр), тогда изменения в объектах того же типа не были затронуты.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...