Berechnete Eigenschaften in Entity Framework

.net calculated-columns entity-framework

Frage

Angenommen, ich habe ein Employee-Objekt mit den folgenden Eigenschaften:

string Name { get; }
float Hours { get; }
float Wage { get; }

Ich möchte eine Eigenschaft hinzufügen, Gehalt, die Stunden * Lohn entspricht. In einem gewöhnlichen Geschäftsobjekt würde ich das einfach in der Eigenschaft codieren, aber dies würde vermutlich ausgelöscht, wenn die Klasse neu generiert werden musste.

Gibt es eine EF-Standardmethode, um dies zu implementieren, ohne sich die Mühe machen zu müssen, es einer Datenbankeinheit zuzuordnen?

Akzeptierte Antwort

Tatsächlich. Erstellen Sie eine separate Datei, z. B. EmployeeExtension.cs .

Fügen Sie in dieser Datei den folgenden Code ein:

public partial class Employee
{
    public decimal Salary
    {
        get { return Hours * Wage; }
    }
}

LINQ to SQL- und Entity Framework-Klassen werden mit dem partiellen Schlüsselwort generiert, damit Sie die Definition auf viele Dateien aufteilen können, da die Designer wussten, dass Sie Mitglieder der Klasse hinzufügen möchten, die nicht überschrieben werden, indem die Basisquelldatei kontinuierlich automatisch generiert wird .


Beliebte Antwort

Wenn ich mich richtig erinnere, sind die von der EF erstellten Klassen unvollständig. So können Sie möglicherweise eine andere Datei hinzufügen, die eine andere Teilklasse enthält (gleicher Namespace, natürlich derselbe Klassenname), die die Eigenschaft implementiert

public single Salary
{
   get
   {
       return this.Hours * this.Wage;
   }
}

Sollte den Trick tun (wenn diese Singles nicht nullfähig sind, beachten Sie bitte!)



Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum