Этот вопрос связан с a previous question of mineКак предотвратить переполнение памяти при использовании IEnumerable <T> и Linq-To-Sql?
Это мой текущий код
IEnumerable<Shape> Get()
{
while(//get implementation
yield return new Shape(//...
}
void Insert()
{
var actual = Get();
using (var db = new DataClassesDataContext())
{
db.Shapes.InsertAllOnSubmit(actual);
db.SubmitChanges();
}
}
Я получаю переполнение памяти, так как IEnumerable слишком велик. Как я могу предотвратить это?
Как я могу получить все элементы в группах по 5? –
Я понял, что InsertBatchOnSubmit будет InsertAllOnSubmit с меньшим количеством элементов. –
Ссылка у Earwicker имеет отличный пример. Я не уверен, что это поможет вам, так как вы делаете отложенное исполнение. Возможно, вам придется иметь список и batchSize = 5 вне цикла. Добавьте элементы из вашего счетчика, вставьте один раз, когда счетчик достигнет размера пакета, а затем удалите предыдущую партию. Это то, о чем вы спрашивали? –