Frage

Ich bin neu in Linq zu Sql, was würde ich erreichen möchte, ist eine einzige Nur-Lese-Eigenschaft auf der Entity-Klasse zu erstellen, die eine Kombination aus mehreren Feldern ist, und zwar möchte ich ein Namensfeld erstellen, die Titel combines- , Vor- und Nachname.

kann ich sehen, wie es zu tun, indem Sie die designer.cs Datei ändern, aber weiß, dass ich das nicht berühren soll.

Ich bin versucht, dies so zu tun, dass in dynamischen Daten, die ich eher eine einzelne Spalte bekommen, als mehrere Spalten.

War es hilfreich?

Lösung

Der Trick hier ist eine partial class zu verwenden; Erstellen Sie eine neue CS-Datei und im gleichen Namensraum fügen Sie eine neue Klasse für Ihren Typ mit dem Namen:

namespace My.Data.Namespace {
    partial class Employee {
        public string Foo {
            get {return Forename + " " + Surname; } // etc
        }
    }
}

Das kombiniert mit Original (generiert) Klassendatei. Dies ist ein üblicher Ansatz zum Hinzufügen von Funktionalität in erzeugten Entitäten (einschließlich dem Daten-Kontext). Vielleicht haben Sie auch bei „partial-Methoden“, aussehen soll, da eine Anzahl von Teil Methoden definiert werden und werden von LINQ to SQL.

Eine Einschränkung: wenn Ihr dbml MySystem.dbml genannt wird, dann vermeiden eine MySystem.cs-Datei erstellen (vermutlich für die partiellen Klassen); gibt es einen Fehler im Code-Generator, der dies zum Scheitern führen können. nennen Sie es einfach etwas anderes.

Andere Tipps

in Ihrer LINQ Select-Anweisung, warum Sie nicht verwenden so etwas wie:

select new {FullName = x.FirstName + " " + x.Surname};

Nicht sicher, ob die Syntax 100% gibt es aber die Idee überprüfen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top