none
se repite la ejecucion de ejecutar los Fluent Api RRS feed

  • Pregunta

  • Estimados

    Cada vez que realizo un insert, delete, update, etc en la DB con EF 6.1.3 se ejecuta el metodo del context :

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    
    public class CrpPosContext : DbContext
        {
            public CrpPosContext() : base("CnxCrpLocal")
            {
                Database.SetInitializer(new MigrateDatabaseToLatestVersion<CrpPosContext, Configuration>());
            }
    
            // entities
    
            public DbSet<EnProduct> EnProducts { get; set; }
            public DbSet<EnMoneda> EnMonedas { get; set; }
            public DbSet<EnMonedaCambio> EnMonedaCambios { get; set; }
            public DbSet<EnAsesor> EnAsesors { get; set; }
            public DbSet<EnCajero> EnCajeros { get; set; }
            public DbSet<EnCuota> EnCuotas { get; set; }
            public DbSet<EnCuotaAsesor> EnCuotaAsesors { get; set; }
            public DbSet<EnTienda> EnTiendas { get; set; }
            public DbSet<EnOperacion> EnOperacions { get; set; }
            public DbSet<EnCaja> EnCajas { get; set; }
    
    
    
            protected override void OnModelCreating(DbModelBuilder modelBuilder)
            {
                modelBuilder.Configurations.Add(new ProductMap());
                modelBuilder.Configurations.Add(new MonedaMap());
                modelBuilder.Configurations.Add(new MonedaCambioMap());
                modelBuilder.Configurations.Add(new AsesorMap());
                modelBuilder.Configurations.Add(new CajeroMap());
                modelBuilder.Configurations.Add(new CuotaMap());
                modelBuilder.Configurations.Add(new CuotaAsesorMap());
                modelBuilder.Configurations.Add(new TiendaMap());
                modelBuilder.Configurations.Add(new OperacionMap());
                modelBuilder.Configurations.Add(new CajaMap());
    
                // establece Key
                modelBuilder.Properties()
                    .Where(p => p.Name == p.ReflectedType.Name + "Id")
                    .Configure(p => p.IsKey());
    
                // establece presicion a todos los importes
                modelBuilder.Properties<decimal>()
                    .Configure(prop => prop.HasPrecision(12, 2));
    
                // establece nvarchar a todos los string
                modelBuilder.Properties<string>()
                    .Configure(p => p.HasColumnType("nvarchar"));
    
                // establece int a todos los int
                modelBuilder.Properties<int>()
                    .Configure(p => p.HasColumnType("int"));
    
                // establece datetime a todos los datetime
                modelBuilder.Properties<DateTime>()
                    .Configure(p => p.HasColumnType("datetime"));
    
                //modelBuilder.Properties().Where(p => p.Name.Substring(0,2) == "Ei")
                //    .Configure(p => p.HasColumnType("int"));
    
                // establece ancho del nvarchar a los usuarios de auditoria
    
                modelBuilder.Properties().Where(p => p.Name == "sAudiUsIs" )
                    .Configure(p => p.HasMaxLength(30));
                modelBuilder.Properties().Where(p => p.Name == "sAudiUsUp")
                    .Configure(p => p.HasMaxLength(30));
    
            }
    
        }

    y pasa por todas las clases mapping; porque sucede esto o falta algo en mi context



    Luis Ormeño

    viernes, 6 de mayo de 2016 21:09

Todas las respuestas

  • hola

    segurametne suceda porque estas creando una nueva instancia en cada operacion que realizas

    si defines

    using(var ontext = new CrpPosContext ()){
    
       //codigo
    
    }


    esto hara que se ejecute el codigo del contexto y es correcto que asi sea


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 6 de mayo de 2016 21:13
  • Hola Leandro

    Creo una nueva instancia de la sgt. manera

    using (var uow =newUnitOfWork(newCrpPosContext()))   

    Esto esta mal aplicado? o es lo correcto?; gracias por la ayuda


    Luis Ormeño

    viernes, 6 de mayo de 2016 21:18