在我的代码中将一个 float (如 0.0001)插入到 sql 中时,结果在数据库中为 0.0000。这是我的表列的定义:
decimal(20,15)
这里是类字段的定义:
public decimal Rate {get ; set; }
我该如何解决这个问题?
我正在使用这样的 EF 代码优先方法:
Class1 obj = new Class1();
obj.Rate = 0.000001;
ClassDbSet.Add(obj);
DbContext.SaveChange();
最佳答案
很久以前我就遇到过这个问题。将此方法(如果不存在)添加到您的 DbContext 中:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Class1>().Property(rec => rec.Rate).HasPrecision(20, 15);
}
当您在 EF 中声明这样的变量时,不提及 float 的精度,因此 EF 引擎接受默认值 (decimale(18,2))
关于c# - 将小数插入 sql 会导致插入零数而不是接近零的十进制数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27130245/