SQL Server十进制 – 为什么我的十进制值只捕获十进制后的两位小数? 是的,它是小数(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().Property(e => e.Value).HasColumnType("Money");
不知道,但是如果你把它改成“十进制”甚至“十进制(18,5)”,如果可能的话,也许它可以工作。 或者拿起ta.speot的评论:
modelBuilder.Entity().Property(e => e.Value) .HasColumnType("Decimal") .HasPrecision(18, 5);
@Mike Marks
您可以解决此问题,如下所示更改为DBContext类中的OnModelCreating方法
protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Entity