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.");
            }
        }
예제 #3
0
 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);
     }
 }