Berechnete Eigenschaften in Entity Framework
Angenommen ich habe ein Mitarbeiter-Objekt mit den folgenden Eigenschaften:
string Name { get; }
float Hours { get; }
float Wage { get; }
Möchte ich hinzufügen, eine Eigenschaft, Gehalt, entspricht Stunden * Lohn. In einem gewöhnlichen business-Objekt, würde ich einfach den code, der in der Eigenschaft, aber das würde vermutlich ausgelöscht, wenn die Klasse musste regeneriert werden.
Ist es ein EF-standard-Weg, dies umzusetzen, ohne durch die Schwierigkeiten der Zuordnung zu einer Datenbank-Entität?
InformationsquelleAutor der Frage Chris B. Behrens | 2009-07-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
In der Tat. Erstellen Sie eine separate Datei, zum Beispiel EmployeeExtension.cs.
In dieser Datei fügen Sie folgenden code:
LINQ to SQL und Entity Framework-Klassen generiert werden, mit der teilweise Schlüsselwort ermöglicht das aufsplitten der definition über die vielen Dateien, weil die Designer wussten, dass Sie Mitglieder hinzufügen möchten, die Klasse, die nicht überschrieben werden durch ständig autogenerating der Basis-Quellcode-Datei.
InformationsquelleAutor der Antwort JoshJordan
Wenn ich mich richtig erinnere werden die Klassen erstellt, die von der EF sind teilweise. So könnte man vielleicht hinzufügen, eine andere Datei mit einem anderen partiellen Klasse (namespace, gleichen classname natürlich), die als implementiert die Eigenschaft
Sollten den trick tun, wenn diese singles sind keine null-Werte zulässt, wohlgemerkt!)
InformationsquelleAutor der Antwort Argo
War ich nicht in der Lage, 'Argo' s Antwort auf die anfangs funktioniert. Nach ein wenig Herumspielen habe ich bemerkt, dass wenn ich dekorierte die Eigenschaft (wie in WCF), die die folgenden Eigenschaften, die alle fein gearbeitet.
Als pro 'Argo Anweisungen erstellen Sie eine separate Datei (zum Beispiel EmployeeExtension.cs). diese sollten markiert werden teilweise, wie beschrieben.
In dieser Datei fügen Sie folgenden code:
Hoffe, das hilft....
InformationsquelleAutor der Antwort Philip.ie
Implementieren Sie die Eigenschaft in der Entität-Klasse. Das entity framework erzeugen, partielle Klassen, so dass Sie zum hinzufügen von Mitgliedern zu der Klasse. Fügen Sie eine Klasse wie diese, um Ihren code:
InformationsquelleAutor der Antwort Martin Liversage
War dies nicht für mich arbeiten mit Entity Framework 5. Die Lösung für mich war einfach die [NotMapped] - Attribut. Für mehr info siehe Code First DataAnnotations
InformationsquelleAutor der Antwort Elijah W. Gagne