c# - attribute - entity framework decimal precision dataannotations
Entity Framework Core: configuraciĆ³n de la precisiĆ³n y escala decimales en todas las propiedades decimales (1)
Esta pregunta ya tiene una respuesta aquí:
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>();
EF Core:
foreach (var relationship in modelBuilder.Model.GetEntityTypes().SelectMany(e => e.GetForeignKeys()))
relationship.DeleteBehavior = DeleteBehavior.Restrict;
y después de leer this , 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
.
Te has acercado. Aquí está el código.
foreach (var property in modelBuilder.Model.GetEntityTypes()
.SelectMany(t => t.GetProperties())
.Where(p => p.ClrType == typeof(decimal)))
{
property.Relational().ColumnType = "decimal(18, 6)";
}