[FIXED] Dezimaler außerhalb des Bereichs C# und SQL Server

Ausgabe

Ich habe eine C# Entity Framework-Klasse wie diese:

public class Card 
{
    public decimal CardNumber { get; set; }
}

In der Datenbank wird dieser Wert etwa so gespeichert:

[card_number] [decimal](38, 2) NULL

Wenn ich dann diesen Code ausführe:

 entities.Set<Card>().Add(card);
 entities.SaveChanges();

(Es sollte beim Speichern von Änderungen fehlschlagen)

Ich scheine diese Ausnahme zu bekommen:

Der Parameterwert „2509067194275615035776,00“ liegt außerhalb des zulässigen Bereichs.

Ich habe versucht, diesen Wert manuell in SQL Server Management Studio einzufügen, und es schien in Ordnung zu funktionieren …

Wohlgemerkt, dies wurde kürzlich von einem langen in C # und einem bigintin SQL Server zu einem decimalin C # und einem decimalin SQL Server geändert …

Ich habe auch diese Konfigurationsklasse, die ungefähr so ​​​​aussieht und das C # -Objekt der Datenbank zuordnet …

public class CardConfiguration : TrackedEntityConfiguration<Card>
{
    public CardConfiguration()
    {
        ToTable("Card", "dbo");
       
        Property(c => c.CardNumber)
             .HasColumnName("card_number") 
             .IsRequired();
    }
}

Ich weiß nicht, warum ich diese Ausnahme bekomme, da sie nicht größer als der dezimale Maximalwert in SQL Server zu sein scheint ….

Ich bin ein bisschen neu bei Entity Framework, also fehlt mir vielleicht irgendwo eine andere Konfiguration?

Lösung

Sie müssen die Genauigkeit der Dezimalstelle angeben. Zum Beispiel:

Property(c => c.CardNumber).HasColumnName("card_number").HasPrecision(18, 6);

Die Genauigkeit hängt von Ihrer SQL-Spaltendefinition ab. Siehe Dialog Spalteneigenschaften:
Numerische Genauigkeit im Dialogfeld „SQL-Eigenschaften“.


Beantwortet von –
Bron Davies


Antwort geprüft von –
Pedro (FixError Volunteer)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like