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)列。