#c# #entity-framework #ado.net
#c# #entity-framework #ado.net
Вопрос:
работая с Azure и EF, я получаю сообщение об ошибке:
DataReader associated with this Command which must be closed first.
Это потому, что мои запросы вложены:
foreach (Element s in ElementSet.All()) {
if (somecondition) {
ElementSet.Add()
}
}
Как я могу загрузить все элементы из ElementSet и закрыть соединение, прежде чем перебирать их с помощью foreach?
PS: В настоящее время с SQL azure я не могу установить MARS в строке подключения, которая заставила бы сервер принимать несколько подключений.
Ответ №1:
MARS не будет использовать несколько подключений, но это позволит выполнять несколько одновременных операций через одно соединение. MARS был недавно добавлен в SQL Azure, поэтому вам обязательно следует его включить.
Если вы хотите принудительно загрузить EF все объекты, немедленно вызовите ToList
в своем запросе.
foreach (Element s in ElementSet.All().ToList()) {
if (somecondition) {
ElementSet.Add()
}
}