LINQ To SQL error «Уже есть открытый DataReader, связанный с этой командой» - PullRequest
1 голос
/ 12 марта 2010

Уже есть открытый DataReader, связанный с этой командой

Я получаю эту ошибку при извлечении данных из объекта DataContext.

Как это можно исправить?

Ответы [ 4 ]

5 голосов
/ 19 июня 2010

Убедитесь, что вы не объявляете свой DataContext как static. Создавайте и уничтожайте ваш DataContext при каждом использовании.

public MyDataClass{

    CustomerDataContext db;

    public void MyDataClass()
    {
       db = new CustomerDataContext();
    }

    public Customer GetCustomer(int id)
    {
       return db.Customers.SingleOrDefault(c=>c.ID == id);
    }
} 
1 голос
/ 19 июня 2010

Проверьте это сообщение

Является ли смешивание ADO.NET и LINQ-TO-SQL плохим? Мой слой данных не работает

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

0 голосов
/ 10 декабря 2018

Мне помогло преобразование всех типов IQueryable, связанных с запросом, который генерирует ошибку, в несколько собственных типов перед использованием их в другом запросе.

0 голосов
/ 19 июня 2010

Вы забыли закрыть DataReader и запустите еще один DataReader для того же соединения.

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