Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Что интересно, решарпер в этом случае нас не предупредил об опасностиСтранно, он в таких случаях должен ругаться на «Possible multiple enumeration of IEnumerable» и предлагать его сконвертировать в список или массив. Думаю, стоит завести баг у них в трекере.
Вот простой пример — var lines = File.ReadLines(«data.txt»);Как раз ReadAllLines возвращает string[], который можно безопасно итерировать сколько угодно раз. Стоит подобрать пример получше.
void Censure(IEnumerable<Bar> bar);
...
Censure(items);
IEnumerable<Bar> Censure(IEnumerable<Bar> bar) {
return bar.Select(x => new Bar { ACount=x.ACount, Value = (x.ACount > 1) ? "Censored" : x.Value });
}
...
items = Censure(items);
var bars = GeBarstFromKamchatkaDbInstance()
var censored = Censure(bars);
foreach(var current in censored)
{
Print(current);
}
PrintFooter(curent.Count())
Я рассчитывал что раз Controller реализует IDisposable то этим кто-то пользуется и не проверял… Разве нет?А вы в Dispose у контроллера вызываете Dispose у DbContext-а?
А о каком количестве объектов тогда идет речь?А это не важно, сколько объектов, они дешёвые. Но пока «жив» открытый с ридером DbContext, висит и TCP-соединение с базой. Причём висит не в пуле ожидая, когда кому-то ещё понадобится, а висит неиспользуемым. И вот это уже проблема. Если его вовремя не диспозить, то у вас под нагрузкой могут полезть проблемы в связи с исчерпанием доступных соединений к базе и веб-приложение встанет раком.
А вы в Dispose у контроллера вызываете Dispose у DbContext-а?
Если его вовремя не диспозить, то у вас под нагрузкой могут полезть проблемы в связи с исчерпанием доступных соединений к базе и веб-приложение встанет раком.
большинство классов с которыми я имею дело — сущности. А они по определению мутабельны.
one.Value = "<censored>";
Повсеместное использование в сигнатурах методов IEnumerable нарушает принципы программирования по контракту и ведет к ошибкам.
var lines = File.ReadLines("data.txt");
string lastLine = lines.ElementAt(lines.Count());
Проблемы использования IEnumerable