2014-11-25 7 views
5

Во время вставки числа с плавающей точкой, например 0,0001 в sql из моего кода, результатом является 0,0000 в базе данных. здесь является определение моего колонка таблицы:Вставка десятичной дробной части в sql вставить нулевое число Вместо десятичного числа рядом с нулем

decimal(20,15) 

Вот определение класса поля:

public decimal Rate {get ; set; } 

Как я могу решить эту проблему?

Я использую EF Code First подход, как это:

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

Можете ли вы показать код, который фактически вставляет значение в вашу БД. – juharr

+0

Дополнительная информация о сервере базы данных, который вы используете, может быть полезна. – AndreySarafanov

+0

Я обновил свой вопрос :) –

ответ

3

Я встречаюсь с этой проблемой давно. Добавьте этот метод (если не существует) в вас DbContext:

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

когда вы объявляете переменную, как это в EF и не говоря уже о какой-либо вещи о том, сколько точности число с плавающей точкой имеет, таким образом EF двигатель принимает значение по умолчанию (decimale (18,2))

1

Если вы используете EF 4.1 или выше переопределить метод OnModelCreating и определение точности десятичного столбца в EF. См. (Decimal precision and scale in EF Code First) сообщение.

public class EFDbContext : DbContext 
{ 
    protected override void OnModelCreating(System.Data.Entity.DbModelBuilder modelBuilder) 
    { 
     modelBuilder.Entity<Class1>().Property(object => object.Rate).HasPrecision(20,15); 

     base.OnModelCreating(modelBuilder); 
    } 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^