public override int WriteToServer(IDataReader dataReader, int tolCount) { if (string.IsNullOrWhiteSpace(DestinationTableName)) { throw new InvalidOperationException("目标表名称不能为空"); } var schema = SchemaTable ?? GetSchemaTable(); var buffer = CreateBuffer(schema.Rows.Count); var totalRows = 0; using (var command = GetInsertCommand(schema)) { var count = 0; for (int i = 0; i < command.Parameters.Count; i++) { command.Parameters[i].Value = buffer[i]; } while (dataReader.Read()) { if (count == BatchSize) { command.ArrayBindCount = count; command.ExecuteNonQuery(); count = 0; var cashDatas = new CashHubDto(); cashDatas.Goal = tolCount; cashDatas.Raised = totalRows; var context = GlobalHost.ConnectionManager.GetHubContext <CashHub>(); context.Clients.All.getMessage(cashDatas); } for (int i = 0; i < schema.Rows.Count; i++) { if (dataReader.IsDBNull(i)) { buffer[i][count] = DBNull.Value; } else { try { buffer[i][count] = _convertor[command.Parameters[i].ParameterName](dataReader[i]); } catch (Exception ex) { throw new InvalidDataException("数据读取错误,行:{0},列{1}".FormatWith(dataReader.RecordsAffected, i), ex.GetBaseException()); } } } ++count; ++totalRows; } if (count > 0) { command.ArrayBindCount = count; command.ExecuteNonQuery(); } } return(totalRows); }
public void Send(CashHubDto msg) { Clients.All.getMessage(msg); }