[英]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.