Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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();
like image 698
Mohammad Joneidi Avatar asked Sep 29 '22 08:09

Mohammad Joneidi


1 Answers

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))

like image 166
Ali Foroughi Avatar answered Oct 17 '22 18:10

Ali Foroughi