首頁 >後端開發 >C++ >如何在 EF Core 程式碼優先遷移中控制小數精確度和小數位數?

如何在 EF Core 程式碼優先遷移中控制小數精確度和小數位數?

Susan Sarandon
Susan Sarandon原創
2025-01-21 23:36:11774瀏覽

How Do I Control Decimal Precision and Scale in EF Core Code-First Migrations?

了解 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn