2014-02-17 3 views
0
  • NET 4,5

Я получаю вышеуказанную ошибку (при условии строки) при развертывании на сервер и итерации по местоположениям в Еогеаспе. Чтобы заставить его работать на рабочем сервере, мне пришлось преобразовать его в массив: var locationArray = locations.ToArray(); и итерации locationArray.Открыть DataReader, который должен быть закрыт первым

Так что мой вопрос в том, когда в TEST (выполняется локально при отладке в VS2013) Я бегу против экземпляра SQLExpress, а в ПРОИЗВОДСТВЕ Я бегу против полноценного SQLServer. Однако почему итерации местоположения не приводят к ошибке в TEST, но делает это в ПРОИЗВОДСТВЕ?

public IQueryable<State> StatesInCountryGet(long aCountryId) 
{ 
    List<State> result = new List<State>(); 

    using (DataRepository dataRepository = DataRepository.Instance()) 
    { 
     //#TODO: Find a better way to do a GROUP BY 
     IQueryable<LocationsMapping> locations = dataRepository.Query<LocationsMapping>(r => r.CountryId == aCountryId); 

     var locationArray = locations.ToArray(); //Why do I need to do this? 
     foreach (LocationsMapping locationMapping in locationArray) 
     { 
      //Add the state if we don't have it already 
      if (!result.Exists(r => r.Id == locationMapping.StateId)) 
      { 
       result.Add(locationMapping.State); 
      } 
     } 
    } 
    return result.AsQueryable(); 
} 
+0

Пожалуйста, добавьте код, на который вы ссылаетесь на сервер ПРОДУКЦИИ, на свой вопрос. Проблема там. –

+0

У вас есть несколько активных наборов результатов = true в строке подключения? –

ответ

2

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

Вызов ToArray() принудительно завершает итерацию (в конце последовательности). На самом деле это довольно обычная вещь, чтобы избежать одновременных читателей в одном соединении.

Что касается причин: возможно, у вас есть Multiple Active Result Sets (MARS) включен один, но не другой; или, возможно, он знает, что MARS никогда не доступен на экспресс, поэтому не пробовал - но он думает, что MARS может быть быть доступным на полном SQL Server, поэтому пытается его использовать.

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

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