了解 EF Core 程式碼優先遷移中的小數精確度與小數位數
Entity Framework Core 的程式碼優先方法在將十進位屬性對應到資料庫列時需要仔細考慮。 雖然 SQL Server 中的預設會對應為 decimal(18, 0)
,但您通常需要根據特定資料要求自訂精確度和小數位數。
定義精確度與尺度
要控制小數列的精確度和小數位數,請利用 HasPrecision
類別中的 DecimalPropertyConfiguration
方法。 此方法接受兩個參數:precision
(總位數)和 scale
(小數位數)。
範例:
<code class="language-csharp">public class EFDbContext : DbContext { protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity<MyClass>().Property(e => e.MyDecimalProperty).HasPrecision(12, 10); base.OnModelCreating(modelBuilder); } }</code>
在此程式碼片段中,MyDecimalProperty
配置為精確度為 12,小數位數為 10,總共 12 位數字,小數點後 10 位。
重要注意事項:
舊版 EF 版本(例如 EF 4.1)不支援 HasPrecision
方法。 對於這些版本,請使用 HasColumnType
方法,如下所示:
<code class="language-csharp"> modelBuilder.Entity<MyClass>().Property(e => e.MyDecimalProperty).HasColumnType("decimal(12, 10)");</code>
請記住,precision
代表總位數,而 scale
特指小數點後的數字。
以上是如何在 EF Core 程式碼優先遷移中控制小數精確度和小數位數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!