У меня есть запрос на базу данных (Cassandra), который возвращает IEnumerable. Попытка выяснить, почему это не возвращает никаких данных (когда я знаю, что есть данные в базе данных), я нашел любопытную проблему.Доступ к IEnumerable очищает содержимое
Запрос действительно возвращает данные, 25 записей. Я проверял это с помощью Data.Count(); Но позже в коде он был пуст. Я понял, что метод графа необъяснимо очищает данные.
После быстрого расследования: Любое чтение этих данных полностью очищает его. Даже при отладке, если я загружу «представление результатов», чтобы получить список данных, сначала я вижу свои 25 записей, затем, если я щелкнул, а затем перезагрузите представление результатов: Emtpy.
У кого-нибудь когда-либо было подобное?
String connectionString = "SELECT * FROM thedatabase WHERE thecondition";
RowSet Data = ExecuteComand(connectionString);
if (Data == null) // interestingly, I can check for null without issue
{
OutputMessage("Output to " + exportFile + " failed");
return;
}
int b = Data.Count(); // results in 25
int c = Data.Count(); // results in 0
Не знаком с Кассандрой и ее разъемом, поэтому не уверен, почему он это делает. Возможно, настройка производительности, так что запрос выполняется только один раз? Я не знаю, подходит ли вам это, но вы пытались материализовать IEnumerable? Это var data = Data.ToList() и работать с этим? – Juan
@Juan Это сработало, спасибо большое. – Joe