DecimalPropertyConvention

默认情况下,Entity Framework 将十进制属性映射到数据库表中的十进制(18,2)列。

public class Box
{
    public int Id { set; get; }
    public decimal Length { set; get; }
    public decimal Width { set; get; }
    public decimal Height { set; get; }
}

StackOverflow 文档

我们可以改变小数属性的精度:

1.使用 Fluent API:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<Box>().Property(b => b.Width).HasPrecision(20, 4);
}

StackOverflow 文档

只有宽度属性映射到十进制(20,4)。

2.更换惯例:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Conventions.Remove<DecimalPropertyConvention>();
    modelBuilder.Conventions.Add(new DecimalPropertyConvention(10, 4));
}

StackOverflow 文档

每个十进制属性都映射到十进制(10,4)列。