public void Write(IEnumerable <IRow> rows) { var sql = _context.SqlUpdateCalculatedFields(_parent, _cf); var fields = _context.GetUpdateCalculatedFields().ToArray(); using (var cn = _cf.GetConnection()) { cn.Open(); var trans = cn.BeginTransaction(); try { foreach (var batch in rows.Partition(_context.Entity.UpdateSize)) { _context.Debug(() => "got a batch!"); var data = batch.Select(r => r.ToExpandoObject(fields)); _context.Debug(() => "converted to expando object"); var batchCount = Convert.ToUInt32(cn.Execute(sql, data, trans, 0, CommandType.Text)); _context.Debug(() => $"Updated {batchCount} calculated field records!"); } trans.Commit(); _context.Debug(() => "Committed updates."); } catch (Exception ex) { _context.Error(ex, ex.Message); trans.Rollback(); } } }