public DynamicPersonPropertyDescriptor(Collection <ColumnsValues> features, ColumnsValues feature) : base(feature.ColumnName, new Attribute[] { new BindableAttribute(true) }) { this.features = features; this.feature = feature; typeConverter = TypeDescriptor.GetConverter(feature.Type); }
public void ExecuteOracleArrayBind(int amountBlocks) { Log($"Iniciando execução de Insert com Blocos de {amountBlocks} registros."); double countAllBlocks = (double)ColumnsValues.First().Value.Count; int interations = Convert.ToInt32(Math.Ceiling(countAllBlocks / (double)amountBlocks)); Log($"Serão {interations} iterações, com blocos de {amountBlocks} registros."); for (int blockIndex = 0; blockIndex < interations; blockIndex++) { List <OracleParameter> columnsOracleParameter = new List <OracleParameter>(); foreach (var item in ColumnsValues) { var column = ColumnsName.Single(x => x.ColumnName.Equals(item.Key)); var paramOracle = new OracleParameter(); paramOracle.OracleDbType = GetType(column.DataType); if (blockIndex == interations - 1) { paramOracle.Value = item.Value.Skip(amountBlocks * blockIndex).ToArray(); } else { paramOracle.Value = item.Value.Skip(amountBlocks * blockIndex).Take(amountBlocks).ToArray(); } columnsOracleParameter.Add(paramOracle); } int arrayBindCount = ((columnsOracleParameter.First().Value as IList <object>) ?? throw new InvalidOperationException()).Count(); Log( $"Iniciando inserção: Iteração {blockIndex + 1} de {interations} com blocos de {arrayBindCount} registros."); using (OracleConnection con = new OracleConnection(StringConnection)) { con.Open(); OracleCommand cmd = con.CreateCommand(); cmd.CommandText = GenerateCommandText(); cmd.ArrayBindCount = arrayBindCount; cmd.Parameters.AddRange(columnsOracleParameter.ToArray()); cmd.ExecuteNonQuery(); } Log( $"Término da inserção: Iteração {blockIndex + 1} de {interations} com blocos de {arrayBindCount} registros."); } }
protected override void Execute(CodeActivityContext context) { try { var cmd = new RDSConnector(Db.Get(context), User.Get(context), Password.Get(context), Host.Get(context), Port.Get(context)); var value = cmd.Delete(Table.Get(context), Columns.Get(context).Split(';'), ColumnsValues.Get(context).Split(';'));; Response.Set(context, JsonConvert.SerializeObject(new { item = value })); } catch (Exception e) { Error.Set(context, e.Message); } }