none
Проблема с чтением данных в asp.net mvc3 RRS feed

  • Вопрос

  • Всем доброго времени суток. Я пытаюсь прочесть данные которые находятся в базе данных из таблиц связанных one to many code-first.

    В общем в консольном приложении, в котором я треннировался выводить данные, нижепреведенный код работает на ура.

    string querystr = result[1];
                var model =
                    _db.Words
                    .Where(w => w.WordText == querystr);
                StringBuilder wordTranslate = new StringBuilder();
                StringBuilder response = new StringBuilder();
                foreach (var item in model)
                {
                    foreach (var translates in item.Translates)
                    {
                        wordTranslate.Append(translates.Translates + " ");
                    }
                    
                    response.Append("Слово - "+item.WordText+" "+"перевод - "+wordTranslate);
                }
                return response.ToString();

    Но в приложении asp dot net mvc 3 примерно такой же код приводит к ошибке:

    Существует назначенный этой команде Command открытый DataReader, который требуется предварительно закрыть.

    Использую DTO для вывода данных.

    public class DayDTO
        {
            public int Id { get; set; }
            public string Name { get; set; }
            public ICollection<ScheduleDTO> Schedule { get; set; }
        }
    
    public class ScheduleDTO
        {
            public int Id { get; set; }
            public string Group { get; set; }
            public DateTime Time { get; set; }
        }

    Сам метод который возвращает данные.

    public DayDTO getDay (int id)
            {
                DayDTO dayDTO = new DayDTO();
                ScheduleDTO scheduleDTO = new ScheduleDTO();
                var days = db.Day.Where(d=>d.Id == id);
    
                foreach (var day in days)
                {
                    foreach (var schedule in day.Schedule)
                    {
                        dayDTO.Name = day.Name;
                        scheduleDTO.Group = schedule.Group;
                        scheduleDTO.Time = schedule.Time;
                    }
                }
    
                return dayDTO;
            }

    В чем может быть ошибка? Подскажите пожалуйста, или другой путь как вывести данные.

    Спасибо.

    4 сентября 2012 г. 8:13

Ответы

  •  Да, такое бывает иногда. Если Вы вручную не открываете и закрываете соединения (потом забываете их закрыть), а в данном случае скореее всего это именно так, то попробуйте установить данное свойство.

    data source=.\SQLEXPRESS;initial catalog=database;integrated security=true;user instance=True;multipleactiveresultsets=True;

    Тут конечно речь только о последнем параметре, остальное должно быть ваше.

    • Предложено в качестве ответа Abolmasov Dmitry 5 сентября 2012 г. 6:24
    • Помечено в качестве ответа YatajgaEditor 10 сентября 2012 г. 19:40
    4 сентября 2012 г. 9:40
    Модератор

Все ответы

  •  Да, такое бывает иногда. Если Вы вручную не открываете и закрываете соединения (потом забываете их закрыть), а в данном случае скореее всего это именно так, то попробуйте установить данное свойство.

    data source=.\SQLEXPRESS;initial catalog=database;integrated security=true;user instance=True;multipleactiveresultsets=True;

    Тут конечно речь только о последнем параметре, остальное должно быть ваше.

    • Предложено в качестве ответа Abolmasov Dmitry 5 сентября 2012 г. 6:24
    • Помечено в качестве ответа YatajgaEditor 10 сентября 2012 г. 19:40
    4 сентября 2012 г. 9:40
    Модератор
  • Привет. Пожалуйста, не забудьте отметить ответ, если он решит вашу проблему. Для этого есть кнопка "Пометить как ответ" под сообщением. Спасибо.

    Для связи [mail]

    5 сентября 2012 г. 6:23