发送到DB时,十进制更改为零

时间:2017-11-14 10:25:07

标签: c# sql-server

也许这是一个重复的问题,但我找不到正确的词来搜索问题。 我使用NHibernate,在模型中我有一个小数,其值设置为0.000005。当我将此对象发送到DB时,它将保存为0.0000000。我在profiler中检查了db调用。我的C#代码正在向DB发送0.000000。我怎么能阻止它?我需要准确的值来保存在数据库中。

我的对象是:

 public class myClass{
        public virtual decimal percentage{get;set;}
        public virtual DateTime StartDate { get; set; 
}
myClass obj = new myClass{percentage = 0.000005 , StartDate = DateTime.Now};

myRepo.SaveOrUpdate(obj);

保存在DB中的值为0.0000000,其数据类型为十进制(38,17)

我无法将数据类型更改为float。 我希望将精确值保存在DB中。应该做些什么?

1 个答案:

答案 0 :(得分:1)

这是我测试的解决方案

public class myClass
{
    public virtual decimal percentage { get; set; }
    public virtual DateTime StartDate
    {
        get;
        set;
    }
}

使用0.000005M代替0.000005

myClass obj = new myClass{percentage = 0.000005M , StartDate = DateTime.Now};

除了在SQL AS DECIMAL (18,6)中选择数据类型,您可以设置DECIMAL (18,2)DECIMAL (18,5)