В моей модели в ядре asp.net, когда я формирую свою базу данных, она позволяет использовать только число с двумя десятичными знаками, например 0,10, но мне не разрешено вставлять четыре десятичных знака в мою базу данных.
Ниже моя модель.
public class Order
{
public int OrderID { get; set; }
[RegularExpression(@"^\d+.\d{0,4}$", ErrorMessage = "Must have four decimal places")]
[Range(0.0001, 1)]
[Display(Name = "Goal Diameter Tolerance")]
public decimal? GoalDiameterTolerance { get; set; }
}
Ниже показан шаблон GoalDiameterTolerance. Он допускает только два десятичных знака. Я могу изменить это, но как мне исправить это перед эшафотом в модели.
GoalDiameterTolerance = table.Column<decimal>(type: "decimal(18, 2)", nullable: true),
Я считаю, что это должно способствовать этому.
GoalDiameterTolerance = table.Column<decimal>(type: "decimal(18, 4)", nullable: true),
Вот как я решил свою проблему.
foreach (var property in modelBuilder.Model
.GetEntityTypes()
.SelectMany(t => t.GetProperties())
.Where(p => p.ClrType == typeof(decimal) ||
p.ClrType == typeof(decimal?))
.Select(p => modelBuilder.Entity(p.DeclaringEntityType.ClrType).Property(p.Name))
)
{
property.HasColumnType("decimal(18,4)");
}