2014-11-25 14 views
5

Durante l'inserimento di un numero float come 0,0001 in sql dal mio codice, il risultato è un database 0,0000. qui è la definizione della mia colonna della tabella:Inserimento di un numero decimale in sql causa l'inserimento di un numero zero Invece di un numero decimale vicino allo zero

decimal(20,15) 

Ecco la definizione di campo di classe:

public decimal Rate {get ; set; } 

Come posso risolvere questo problema?

Sto usando EF Codice primo approccio in questo modo:

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

Puoi mostrare il codice che sta effettivamente inserendo il valore nel tuo DB. – juharr

+0

Ulteriori informazioni sul server database in uso potrebbero essere utili. – AndreySarafanov

+0

Ho aggiornato la mia domanda :) –

risposta

3

Mi sono imbattuto in questo problema molto tempo fa. Aggiungere questo metodo (se non esiste) in voi DbContext:

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

quando si dichiara una variabile come questo in EF e non fanno menzione alcuna cosa su quanti precisione il numero float hanno, in modo da EF Motore accettare il valore di default (decimale (18,2))

1

Se si utilizza EF 4.1 o superiore l'override del metodo OnModelCreating e si specifica di precisione per la colonna decimale nel EF. Vedi (Decimal precision and scale in EF Code First) post.

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); 
    } 
} 
Problemi correlati