[Entity Framework][Code First]Affecting the Precision and Scale of Decimals

Affecting the Precision and Scale of Decimals

前言

通常只要是計算到錢或者是精細度要比較高的計算欄位,都會用decimal,而Code First預設的decimal長度為(18,2),如果要修改的話使用Code First也是非常簡單,只是只能用Fluent的方式,預設沒辦法使用Data Annotation(除非自己寫擴充)。

Convention Decimals are 18, 2
Data Annotation unavailable
Fluent Entity<T>.Property(t=>t.PropertyName).HasPrecision(n,n)

 

如以下範例:

public class Room
{
    [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public Guid Identifier { get; set; }

    public string Name { get; set; }
    
    public decimal Price { get; set; }

    public DateTime StartDate { get; set; }

    public DateTime EndDate { get; set; }        
}

預設為decimal(18,2)

使用Fluent API設定後

public class RoomConfiguration : EntityTypeConfiguration<Room>
{
    public RoomConfiguration()
    {
        Property(x => x.Price).HasPrecision(10, 2);
    }
}

 

 

一天一分享,身體好健康。

該追究的不是過去的原因,而是現在的目的。