Search code examples
c#sql-server-2012entity-framework-ctp5

Inserting a decimal into sql cause inserting a zero number Instead of a decimal number near zero


During insert a float number like 0.0001 into sql from my code, the result is a 0.0000 in database. here is definition of my table column:

decimal(20,15) 

Here is the definition of class field:

public decimal Rate {get ; set; }

How can I solve this problem?

I am using EF Code first approach like this:

Class1 obj = new Class1();
obj.Rate = 0.000001;
ClassDbSet.Add(obj);
DbContext.SaveChange();

Solution

  • I have be encounter with this issue long time ago. Add this method (if not exists) into you DbContext :

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
         modelBuilder.Entity<Class1>().Property(rec => rec.Rate).HasPrecision(20, 15);
    }
    

    when you declare a variable like this in EF and do not mention any thing about how many precision the float number have , so EF Engine accept the default value (decimale(18,2))