Я экспериментирую с этим первым подходом к коду, но теперь я обнаружил, что это свойство типа System. Десятичное число сопоставляется со столбцом sql типа decimal (18, 0).
Как настроить точность столбца базы данных?
По-видимому, вы можете переопределить метод DbContext.OnModelCreating () и настроить точность следующим образом:
protected override void OnModelCreating(System.Data.Entity.ModelConfiguration.ModelBuilder modelBuilder)
{
modelBuilder.Entity<Product>().Property(product => product.Price).Precision = 10;
modelBuilder.Entity<Product>().Property(product => product.Price).Scale = 2;
}
Но это довольно утомительный код, когда вам нужно делать это со всеми вашими, связанными с ценой properties, поэтому я придумал следующее:
protected override void OnModelCreating(System.Data.Entity.ModelConfiguration.ModelBuilder modelBuilder)
{
var properties = new[]
{
modelBuilder.Entity<Product>().Property(product => product.Price),
modelBuilder.Entity<Order>().Property(order => order.OrderTotal),
modelBuilder.Entity<OrderDetail>().Property(detail => detail.Total),
modelBuilder.Entity<Option>().Property(option => option.Price)
};
properties.ToList().ForEach(property =>
{
property.Precision = 10;
property.Scale = 2;
});
base.OnModelCreating(modelBuilder);
}
Хорошая практика - вызывать базовый метод, когда вы переопределяете метод, даже если базовая реализация ничего не делает.
Обновление: Эта статья также была очень полезной.