2014-11-25 6 views
5

Beim Einfügen einer Gleitkommazahl wie 0.0001 in sql von meinem Code ist das Ergebnis eine 0.0000 in der Datenbank. hier ist Definition meiner Tabellenspalte:Einfügen einer Dezimalstelle in sql, weil eine Null eingefügt wird Anstelle einer Dezimalzahl nahe Null

decimal(20,15) 

Hier ist die Definition von Klassenfeld:

public decimal Rate {get ; set; } 

Wie kann ich dieses Problem lösen?

Ich bin mit EF-Code erster Ansatz wie folgt aus:

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

Können Sie den Code anzeigen, der den Wert tatsächlich in Ihre DB einfügt. – juharr

+0

Weitere Informationen auf dem Datenbankserver, den Sie verwenden, könnten hilfreich sein. – AndreySarafanov

+0

Ich habe meine Frage aktualisiert :) –

Antwort

3

Ich habe vor langer Zeit auf dieses Problem stoßen. Dieses Verfahren (falls nicht vorhanden) in Sie DbContext:

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

wenn Sie eine Variable wie dies in EF erklären und nicht erwähnen, irgend etwas darüber, wie viel Präzision der Schwimmer Nummer hat, so EF Motor den Standardwert (dezimale (18,2))

1

Wenn Sie EF verwenden 4.1 oder höher die OnModelCreating Methode überschreiben und geben Präzision für Dezimal-Spalte in EF. Siehe (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); 
    } 
} 
Verwandte Themen