Wie trim-Werte unter Verwendung von Linq to Sql?
In der Datenbank habe ich eine Tabelle mit dem Namen Contact. Die ersten Namen und andere solche string-Felder sind entworfen, um einen Char-Datentyp (nicht mein Datenbank-design). Mein Objekt Kontakt-Karten auf einen string-Typ in den Eigenschaften. Wenn ich wollte, zu tun, einen einfachen test abrufen, einen Kontakt Objekt id würde ich so etwas tun:
Contact contact = db.Contacts.Single(c => c.Id == myId);
Contact test = new Contact();
test.FirstName = "Martin";
Assert.AreEqual(test.FirstName, contact.FirstName);
Den Kontakt.Vorname Wert ist "Martin ", weil der char-Typ. Wo kann ich abfangen, die FirstName-Eigenschaft, wenn es geladen wird? OnFirstNameChanging(string-Wert) nicht genannt auf der ersten Belastung (Kontakt), aber doch auf die test-Objekt.
- Sie können dies tun
contact.FirstName.Trim()
. Ich sah einige alte code von meinen eigenen, die ich brauche, um "jetzt aktualisieren". Hier ist der Verweis auf Kanonische String LINQ to SQL-Funktionen: docs.microsoft.com/en-us/dotnet/framework/data/adonet/ef/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vielleicht könnte man es in der OnLoaded() partielle Methode? Hinweis: ich habe noch nie verwendet, aber ich nehme an, es würde wie folgt Aussehen:
Wenn Sie nicht ändern können das schema, möchten Sie vielleicht, um die designer generiert accessor-private/protected und erstellen Sie eine öffentliche accessor-front-end die Eigenschaft in einer partiellen Klasse Umsetzung. Sie können dann Schneiden Sie die Wert in die get-accessor.
Und überprüfen Sie, dass die LINQ-provider setzt diese in die entsprechenden SQL.
Hängt es von der Kontrolle, den Sie über das schema und den code.
Wenn die Werte werden durch den Aufruf eines Konstruktor mit allen Parametern, tun Sie die trimmungen, etc. zugewiesen werden, der die member-Variablen.
Wenn Sie zugewiesen wird, um die Eigenschaften (wahrscheinlich aus dem Beispiel), ändern Sie den SET-accessor verfügt, so dass es nicht den trim gibt.
Haben Sie potenzielle Probleme, wenn Sie wirklich WOLLEN, führende oder nachgestellte Leerzeichen irgendwann obwohl.
Wenn Sie können nicht ändern Sie die Basisklasse code, versuchen Sie es mit partiellen Klassen, oder Erben von der Klasse und überschreiben die Eigenschaften dort.
Wenn Sie das nicht können, dann ist mein letzter Vorschlag wäre zu schreiben Sie eine factory-Klasse von einer Art, die Sie übergeben ein Objekt erstellt und es reinigt es gemäß den Regeln, die Sie wollen.
Können Sie ein
ForEach
auf Ihrer Liste der Kontakte, bevor Sie versuchen, die Suche nach Martin.Aber dieser Weg ist nicht ganz einfach zu pflegen, wenn es getan werden muss, für mehrere Felder.