Mein Datenbankfeld (SQL Server 2005) ist mit numerisch (15,2) definiert.
Die von LINQ 2 SQL generierte Eigenschaft ist
%Vor%Im Debug überprüfe ich den Entity-Wert für diese Eigenschaft = 23.6363636363 (etc)
Ich gehe dann über context.SubmitChanges ()
Ich habe SQL Profiler ausgeführt und dies ist die update-Anweisung.
%Vor%Wie Sie sehen können @ p9 = 23.63, würde ich erwarten, dass es 23,64 ist.
Aktualisieren
Meine Frage ist,
Wenn dies ein LINQ to SQL-Bug ist, würde ich erwarten, dass es ein bekannter ist, wo würde ich das herausfinden? Gibt es irgendwo eine Fehlerliste?
Auch Was wäre die beste Arbeit?
Update 2
das hat auch nicht funktioniert, es geht in dieses Stück Code vor Sendänderungen und scheint zu funktionieren, aber das generierte Update sql hat immer noch den abgeschnittenen Wert, nicht diesen aktualisierten gerundeten Wert.
%Vor%Der Fix, den ich im Moment habe, besteht darin, den Entity-Wert direkt zu aktualisieren.
MSDN sagt:
Dezimal und Geldarten Der Standardwert Genauigkeit des SQL Server-DECIMAL-Typs (18 Dezimalstellen nach links und Recht des Dezimalpunktes) ist viel kleiner als die Genauigkeit der CLR Dezimal-Typ, mit dem es gepaart wird Standard. Dies kann zu Präzision führen Verlust beim Speichern von Daten in der Datenbank. Aber genau das Gegenteil kann passieren, wenn der SQL Server DECIMAL type ist mit größer als konfiguriert 29 Stellen der Genauigkeit. Wenn ein SQL Server DECIMAL Typ wurde konfiguriert mit einer größeren Genauigkeit als das CLR-System. Dezimal, Präzision Beim Abrufen von Daten kann ein Verlust auftreten aus der Datenbank.
Sie könnten das umgehen, indem Sie OnMy_Property_NameChanged()
überschreiben und dort runden. Stellen Sie sicher, dass Sie den richtigen Rundungsmodus (auf gerade oder von Null) angeben.
Tags und Links sql-server c# linq-to-sql rounding