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