elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  ObjectContext.SaveChanges (Método)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ObjectContext.SaveChanges (Método)  (Leído 1,370 veces)
«Vicø™»

Desconectado Desconectado

Mensajes: 4


Ver Perfil
ObjectContext.SaveChanges (Método)
« en: 4 Diciembre 2013, 15:57 pm »

Hola nuevamente... en esta oportunidad quisiera saber si me pueden ayudar con algun consejo de como optimizar el metodo base.SaveChanges(). Veran tengo un sistema que ya tiene registrados mas de 10.000 ventas y actualmente al realizar una venta tarda 6 segundos al ejecutarse este metodo. Les paso un parte de mi codigo que tal vez pueda servirles de ayuda.

Código
  1. public bool RegistrarNuevaVenta()
  2.        {
  3.            bool noHayExito = true;
  4.            bool puedeContinuar = true;
  5.  
  6.            while (noHayExito && puedeContinuar)
  7.            {
  8.                MODEL.Ventas ventaAux = new MODEL.Ventas();
  9.                GestionEntities cx = new GestionEntities();
  10.                TransactionOptions opts = new TransactionOptions();
  11.                opts.IsolationLevel = System.Transactions.IsolationLevel.Serializable;
  12.                System.Transactions.TransactionScope scope = new System.Transactions.TransactionScope(TransactionScopeOption.Required, opts);
  13.                try
  14.                {
  15.                    MODEL.Ventas venta = new MODEL.Ventas();
  16.                    venta.Activo = true;
  17.  
  18.                    CargarDatoGenerales(cx, venta);
  19.                    CargarInventario(cx, venta, View.FechaVentaView);
  20.                    CargarServicios(cx, venta);
  21.  
  22.                    venta.EstadoInventario = InferirEstadoInventario();
  23.  
  24.                    if (View.TipoVentaView == VentasAgregarPresenter.VENTA_RESERVA)
  25.                    {
  26.                        CargarReserva(cx, venta);
  27.                    }
  28.  
  29.                    if (View.TipoVentaView == VENTA_CONTADO
  30.                    || View.TipoVentaView == VENTA_RESERVA)
  31.                    {
  32.                        CargarPago(cx, venta);
  33.  
  34.                        venta.EstadoPago = (venta.SaldoBs > 0 ? Cttes.Ventas.Estado.Pago.PENDIENTE : Cttes.Ventas.Estado.Pago.CANCELADO);
  35.                    }
  36.  
  37.                    if (View.TipoVentaView == VENTA_CREDITO_NORMAL)
  38.                    {
  39.                        CargarPlanPagos(cx, venta);
  40.                        venta.EstadoPago = Cttes.Ventas.Estado.Pago.PENDIENTE;
  41.                    }
  42.  
  43.                    if (View.TipoVentaView == VENTA_CREDITO_SIMPLE
  44.                    || View.TipoVentaView == VENTA_CREDITO_NORMAL)
  45.                    {
  46.                        //Una venta a crédito no registra ningún pago inicial.
  47.                        venta.SaldoBs = venta.MontoTotalBs;
  48.                        venta.SaldoSus = venta.MontoTotalSus;
  49.                        venta.EstadoPago = Cttes.Ventas.Estado.Pago.PENDIENTE;
  50.                    }
  51.  
  52.                    cx.Ventas.AddObject(venta);
  53.                    [b]cx.SaveChanges(); //Es aqui donde tarda 6 seg[/b]
  54.                    scope.Complete();
  55.                    ventaAux = venta;
  56.                    VentaA = venta;
  57.                    noHayExito = false;
  58.                }
  59.                catch (InsuficienteStockException ex1)
  60.                {
  61.                    Mensaje.Instancia.NotificarMensajeProblema(ex1.Message);
  62.                    puedeContinuar = false;
  63.                }
  64.                catch (InvalidOperationException ex2)
  65.                {
  66.                    Mensaje.Instancia.NotificarMensajeProblema(ex2.Message);
  67.                    puedeContinuar = false;
  68.                }
  69.                catch (AsegurarCuotaFraccionException ex3)
  70.                {
  71.                    Mensaje.Instancia.NotificarMensajeProblema(string.Format("Producto: {0}\tDeposito: {1}\nNo existe suficiente stock", ex3.Producto.Nombre, ex3.Deposito.Nombre));
  72.                    puedeContinuar = false;
  73.                }
  74.                catch (Exception ex)
  75.                {
  76.                    if (Utilidad.EsDeadLock(ex))
  77.                    {
  78.                        puedeContinuar = true;
  79.                    }
  80.                    else
  81.                    {
  82.                        Mensaje.Instancia.NotificarExcepcion(ex);
  83.                        puedeContinuar = false;
  84.                    }
  85.                }
  86.                finally
  87.                {
  88.                    cx.Dispose();
  89.                    scope.Dispose();
  90.                }
  91.            }



[MOD]: Utiliza las etiquetas de inserción de código.


« Última modificación: 4 Diciembre 2013, 16:31 pm por EleKtro H@cker » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Python] invocar metodo desde metodo.
Scripting
Hesp 2 7,037 Último mensaje 8 Marzo 2009, 00:38 am
por Hesp
metodo xor
Dudas Generales
crsi 0 3,313 Último mensaje 9 Agosto 2010, 20:58 pm
por crsi
Metodo get y set
Java
mapers 1 3,327 Último mensaje 5 Octubre 2011, 00:06 am
por Valkyr
metodo de .NET
.NET (C#, VB.NET, ASP)
andaluz 5 3,195 Último mensaje 2 Febrero 2012, 13:09 pm
por andaluz
metodo
Programación C/C++
Pirat3net 3 2,194 Último mensaje 7 Mayo 2013, 06:16 am
por flony
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines