none
Actualizar Datos Masivamente LinQ C# RRS feed

  • Pregunta

  • Buenas inges soy nuevo vengo de VFP tenga paciencia y ahora tratando en C# , estoy tratando de actualizar 50,000 registros de precios pero dura como 3 horas para aumentar o disminuir los precios

    les adjunto el código si alguien me puede ayudar:

    var Registros = (from p in Sys_conn.Precios select p).ToList();

                foreach (Precios oPre in Registros)
                {
                    oPre.Costo = CostoNuevo(oPre.Costo, UpDoPorcentaje.Value);
                    oPre.IvaCosto = IvaNuevo(oPre.Costo, NumUpDo_IvaCalculos.Value);
                    oPre.UltimoCosto = oPre.Costo + oPre.IvaCosto;
                    oPre.Precio1 = Math.Ceiling(oPre.UltimoCosto * ObtenUtilidad(oPre.idInterno, "1", true));
                    oPre.Precio2 = Math.Ceiling(oPre.UltimoCosto * ObtenUtilidad(oPre.idInterno, "2", true));
                    oPre.Precio3 = Math.Ceiling(oPre.UltimoCosto * ObtenUtilidad(oPre.idInterno, "3", true));
                    oPre.Precio4 = Math.Ceiling(oPre.UltimoCosto * ObtenUtilidad(oPre.idInterno, "4", true));
                    oPre.Precio5 = Math.Ceiling(oPre.UltimoCosto * ObtenUtilidad(oPre.idInterno, "5", true));
                    oPre.IvaUnitarioPrecio1 = Math.Round( oPre.Precio1 - (oPre.Precio1 / comodin),2,MidpointRounding.ToEven);
                    oPre.IvaUnitarioPrecio2 = Math.Round( oPre.Precio2 - (oPre.Precio2 / comodin),2,MidpointRounding.ToEven);
                    oPre.IvaUnitarioPrecio3 = Math.Round( oPre.Precio3 - (oPre.Precio3 / comodin),2,MidpointRounding.ToEven);
                    oPre.IvaUnitarioPrecio4 = Math.Round( oPre.Precio4 - (oPre.Precio4 / comodin),2,MidpointRounding.ToEven);
                    oPre.IvaUnitarioPrecio5 = Math.Round( oPre.Precio5 - (oPre.Precio5 / comodin),2,MidpointRounding.ToEven);
                }

                try
                {
                    Sys_conn.SubmitChanges();
                    Funciones.MsjInfo("Se modifico Correctamente");
                }
                catch (Exception ex)
                {
                    Funciones.MsjError(ex.Message, "Error Sistema o Conexion ");
                }

    martes, 31 de marzo de 2020 3:11

Todas las respuestas

  • hola

    >>estoy tratando de actualizar 50,000 registros de precios pero dura como 3 horas para aumentar o disminuir los precios

    si es asi, son muchos registrospara actualizar desde codigo, con que imaginemos cada iteracion demore 0.5 seg serian 50mil seg =416min = 7hs, con lo cual en tu caso seguro debes hacerlo mas rapido, pero se demora por el volumen y eso que parti de la base que cada operacion demoraba 0.5 seg

    Si quieres aumentar la performance deberias hacerlo en una operacion de transformacion directo en la db, un ETL

    Transformaciones de Integration Services

    podrias usar el servicio de transformacion de datos, al operar a nivel de la db sera mucho mas rapido

    No se cual es el origen de los datos, pero se que tambien se pueden hacer Links server y al tener la db linkeada unirla en queries entres ambas dbs

    Cómo agregar una base de datos de Visual FoxPro a SQL Server como un servidor vinculado

    si usas el management studio creo que tambien se puede linkear visualmente

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 31 de marzo de 2020 4:29
  • Hilo cerrado
    viernes, 3 de abril de 2020 19:39
    Moderador