Quantcast
Channel: Für Entwickler: SQL Server Forum
Viewing all articles
Browse latest Browse all 1772

EF / C#: Nachträgliche Änderung von Precision / Scale bei Decimals

$
0
0

Hallo,

ich habe in meinem Code First Entity Model mehrere Felder hinzugefügt:

[DataMember]
[Column(Order = 28)]
public Decimal? ErrorOfIndication01 { get; set; }

[DataMember]
[Column(Order = 29)]
public Decimal? ErrorOfIndication02 { get; set; }

[DataMember]
[Column(Order = 30)]
public Decimal? ErrorOfIndication03 { get; set; }

anschliessend habe ich eine Migration erstellt in welcher diese Felder dann acuh enthalten waren:

AddColumn("MyTable", "ErrorOfIndication01", c => c.Decimal(precision: 18, scale: 2));
AddColumn("MyTable", "ErrorOfIndication02", c => c.Decimal(precision: 18, scale: 2));
AddColumn("MyTable", "ErrorOfIndication03", c => c.Decimal(precision: 18, scale: 2));

Leider fiel mir erst nach den ersten Programmtests auf, daß die Nachkommastellen unzureichend waren. Ich habe die Migration mit Update-Database zurückgedreht, die Migration geändert auf

AddColumn("MyTable", "ErrorOfIndication01", c => c.Decimal(precision: 32, scale: 16));
AddColumn("MyTable", "ErrorOfIndication02", c => c.Decimal(precision: 32, scale: 16));
AddColumn("MyTable", "ErrorOfIndication03", c => c.Decimal(precision: 32, scale: 16));

und dann mit Update-Database die Dtaenbank wieder aktualisiert; die neuen Spalten wurden dann auch entsprechend angelegt:

[ErrorOfIndication01] [decimal](32, 16) NULL,
[ErrorOfIndication02] [decimal](32, 16) NULL,
[ErrorOfIndication03] [decimal](32, 16) NULL

Allerdings werden die eingegebenen Daten weiterhin nach 2 Nachkommastellen abgeschnitten. Mittels Profiler habe ich dann das Update-Statement identifiziert und hier ist dann immer noch die 18.2 drin anstatt der 32.16:

...
[ErrorOfIndication01] = @13, 
[ErrorOfIndication02] = @14, 
[ErrorOfIndication03] = @15, 
...
@13 decimal(18,2),
@14 decimal(18,2),
@15 decimal(18,2),
...

Im Code ist aber alles OK; ist entsprechend im SQL-Server irgendwas noch auf altem Stand? Wo muss ich da ansetzen?

SQL Server 11.0.3000 auf der Dev-Maschine, EF 6.20, C# 7, .NET Framework 4.72


Viewing all articles
Browse latest Browse all 1772

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>