簡體   English   中英

SQL Server Decimal - 為什么我的十進制值只捕獲十進制后的兩位小數? 是的,它是小數(18,5)

[英]SQL Server Decimal - Why is my decimal value only capturing two decimal places after the decimal? Yes, it's decimal(18,5)

我將首先說我的十進制數據類型定義為十進制(18,5):

在此輸入圖像描述

在應用程序到達數據庫之前來自我的應用程序的值是:

在此輸入圖像描述

所以你可以看到目前為止,一切看起來都不錯。 我應該在我的數據庫表中看到列Capsule105 但是,在我的記錄保存到數據庫之后,我查看它插入的記錄 - 看看最后一行:

在此輸入圖像描述

該值不應在兩位小數后停止。 它應該到我的數據庫中定義的最后一個小數位,對吧?

這是我的InsertOrUpdate方法(VS中的模板庫存):

public void InsertOrUpdate(CalculatedResults calculatedresults)
{
    if (calculatedresults.Pk == default(int)) {
        // New entity
        context.CalculatedResults.Add(calculatedresults);
    } else {
        // Existing entity
        context.Entry(calculatedresults).State = EntityState.Modified;
    }
}

我正在使用Code First方法並從我的模型生成我的數據庫。

有什么想法在這里發生了什么? 請幫忙!!

我有類似的問題,所以這可能有幫助:我必須在DbContext指定類型。 在我的例子中,數據庫中的字段是Money類型,而models屬性的C#類型是Decimal

modelBuilder.Entity<MyEntity>().Property(e => e.Value).HasColumnType("Money");

不知道,但如果你把它改成“十進制”甚至“十進制(18,5)”,如果可能的話,也許它可以工作。 或者拿起ta.speot的評論:

modelBuilder.Entity<MyEntity>().Property(e => e.Value)
            .HasColumnType("Decimal")
            .HasPrecision(18, 5);

@Mike Marks

您可以解決此問題,如下面更改為DBContext類中的OnModelCreating方法

protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Entity<Table1>().Property(a => a.price).HasPrecision(18, 5); }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM