首先我会说我的十进制数据类型定义为 decimal(18,5):
我的应用在进入数据库之前的值是:
到目前为止,一切看起来都很好。我应该在我的数据库表中看到 Capsule105
列的值 0.47588。但是,在我的记录保存到数据库后,我查看了它插入的记录——看看最后一行:
该值不应停在小数点后两位。它应该转到我的数据库中定义的最后一个小数位,对吧?
这是我的 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
类型,模型属性的 C# 类型是 Decimal
:
modelBuilder.Entity<MyEntity>().Property(e => e.Value).HasColumnType("Money");
不知道,但如果可能的话,如果您将其更改为“Decimal”甚至“Decimal(18,5)”,也许它会起作用。或获取 ta.speot 的评论:
modelBuilder.Entity<MyEntity>().Property(e => e.Value)
.HasColumnType("Decimal")
.HasPrecision(18, 5);
关于c# - SQL Server Decimal - 为什么我的十进制值只捕获小数点后两位小数?是的,它是小数(18,5),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16070232/