Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

936
Vistas
Entity Framework Core: configuración de la precisión decimal y la escala en todas las propiedades decimales

Quiero establecer la precisión de todas las propiedades decimales en (18,6). En EF6 esto fue bastante fácil:

 modelBuilder.Properties<decimal>().Configure(x => x.HasPrecision(18, 6));

pero parece que no puedo encontrar nada similar a esto en EF Core. Eliminar la convención de eliminación en cascada no fue tan simple como en EF6, así que encontré la siguiente solución:

EF6:

 modelBuilder.Conventions.Remove<ManyToManyCascadeDeleteConvention>(); modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>();

Núcleo EF:

 foreach (var relationship in modelBuilder.Model.GetEntityTypes().SelectMany(e => e.GetForeignKeys())) relationship.DeleteBehavior = DeleteBehavior.Restrict;

y después de leer esto , probé un enfoque similar:

 foreach (var entityType in modelBuilder.Model.GetEntityTypes() .SelectMany(x => x.GetProperties()) .Where(x => x.ClrType == typeof(decimal))) { // what to do here? }

Me gustaría si estoy en el camino correcto y cómo continuar, o si no, debería comenzar a poner anotaciones de datos en todas las propiedades decimal .

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Te acercaste. Aquí está el código.

 foreach (var property in modelBuilder.Model.GetEntityTypes() .SelectMany(t => t.GetProperties()) .Where(p => p.ClrType == typeof(decimal) || p.ClrType == typeof(decimal?))) { // EF Core 1 & 2 property.Relational().ColumnType = "decimal(18, 6)"; // EF Core 3 //property.SetColumnType("decimal(18, 6)"); // EF Core 5 //property.SetPrecision(18); //property.SetScale(6); }
 // EF Core 6 protected override void ConfigureConventions( ModelConfigurationBuilder configurationBuilder) { configurationBuilder.Properties<decimal>() .HavePrecision(18, 6); }
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda