我首先要说我的十进制数据类型定义为十进制(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方法并从我的模型生成我的数据库。
任何想法在这里发生了什么?请帮忙!!
答案 0 :(得分:4)
我遇到了类似的问题,所以这可能会有所帮助:我必须在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);
答案 1 :(得分:0)
@Mike Marks
您可以解决此问题,如下面对DBContext类中 OnModelCreating 方法的更改
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Table1>().Property(a => a.price).HasPrecision(18, 5);
}