Ich habe einen Prozess, der Daten von einer Datenbank-Entität in eine andere kopieren sollte. Deshalb verwende ich Entity Framework 6 und LINQ Ausdrücke in C#:Entity Framework 6: Trimmen funktioniert nicht richtig
public partial class ReferenceEntities : DbContext {
public Nullable<System.DateTime> ActivationDate { get; set; }
public string Code { get; set; }
}
this.ReferenceEntities.ReferenceEntity.AsEnumerable().Select(referenceEntry => new StagingReferenceLoader() {
ActivationDate = referenceEntry.ActivationDate,
Code = referenceEntry.Code?.TrimStart('0').Trim()
});
this.ProcessingEntities.StagingReferenceLoader.AddRange(stagingEntries);
this.ProcessingEntities.SaveChanges();
Code
ist char(11)
Spalte in beiden Entitäten, die von diesem Prozess betroffen sind.
Beispiel: 00000253089
Mit den Trim Operationen ich es so aussehen zu wollen:
In StagingReferenceLoader der Code
Wert wie folgt aussieht 253089
. Das sieht auf Anhieb gut aus, wenn ich es ausgeführt habe. Aber wenn ich diese SQL-Abfrage auf der Datenbank lief gibt es direkt mein das Ergebnis wie folgt:
SELECT DATALENGTH(code), len(code), code
FROM staging.ReferenceLoader
datalength | len | code
11 | 6 | 253177
11 | 6 | 270724
Warum tut nur Entity Framework nicht die Betrieb trimmen?
Können Sie [Code] in ein varchar (11) ändern? Ich denke, das Problem ist, dass char (11) immer eine feste Länge hat. –
Ich werde es versuchen. Danke – rbr94
@ CarlosAdrián Es funktioniert. Vielen Dank – rbr94