0

Я использую модель Entity для привязки данных и других манипуляций с данными для моего проекта ASP.NET MVC 4 Razor.Уже открытый DataReader для модели Entity в ADO.NET в проекте ASP.NET MVC

Я пытаюсь, в моей модели, чтобы связать данные, как это в моем Controller:

http://ideone.com/GvskaG

Когда я достигаю линию 26:

26. Sender = db.GetLoginByUserId(item.sender_id).FirstOrDefault(), 
27. Receiver = db.GetLoginByUserId(item.recv_id).FirstOrDefault(), 

Я получаю такие ошибка:

{«Уже существует открытый DataReader, связанный с этим соединением, который должен быть закрыт первым».}

Действительно, я не понимаю, как закрыть его вручную, потому что объект ADO.NET слишком автоматический, и я не определял, что открытие закрывается для DataReader или соединения.

Я думаю, что это может быть из-за 15-й линии:

15. var currentUserId = db.GetUserIdByLogin(Request.Cookies["user-name"].Value); 

И модель Entity ли открыть соединение/DataReader и удаление их только после того, как скобки } символа, когда ГЙ collectiing мусора ,

Похоже, что я могу сделать только один вызов в одном методе, но если мне нужно больше вызовов от модели Entity, как это можно сделать?

Спасибо!

ответ

0

Возможно, вы находитесь в цикле foreach на этом этапе? Это обычный способ вызвать это - перехват первого читателя при выполнении n + 1 (запрос на элемент) внутри цикла. Обычные исправлениями являются (один из):

  • настроить запрос с готовностью выборки вложенных данных таким образом, что она уже доступна
  • буфера внешнего цикла в списке/массив, так что читатель закончен перед тем начинается внутренняя петля
+0

Я изменил источник 'Controller' на такой код: http://ideone.com/jE6Ps1, и данные привязываются очень хорошо без исключений. Спасибо за совет, Марк, но я думаю, что новый код выглядит очень уродливо :(Является ли модель сущности такой причудливой? –

 Смежные вопросы

  • Нет связанных вопросов^_^