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