c# - 将小数插入 sql 会导致插入零数而不是接近零的十进制数

标签 c# sql-server-2012 entity-framework-ctp5

在我的代码中将一个 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/

相关文章:

visual-studio-2012 - SQL Server 2012 DataTools + Visual Studio 2012 = 安装了不兼容的 DacFx 版本

sql-server - 在 CASE 语句中使用 CHARINDEX 和 SUBSTRING

c# - 是什么原因导致 INSERT 语句与 FOREIGN KEY 约束冲突?

c# - System.Threading.Timer 不会触发

c# - 为 bool 实现 CompareAndSwap

c# - 控制台编程中的上划线

c# - SQL 插入导致空字段

azure - 将 SQL Server 数据库备份恢复到 Windows Azure VM

c# - EF4 CTP5 Code First 中的级联删除对子记录执行更新

.net - 工作单元实现