實體框架中的計算屬性

.net calculated-columns entity-framework

假設我有一個具有以下屬性的Employee對象:

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

我想添加一個屬性Salary,它等於Hours * Wage。在一個普通的業務對像中,我只是簡單地在屬性中編寫代碼,但如果需要重新生成類,這可能會消失。

是否有EF標準方法來實現這一點,而不必經歷將其映射到數據庫實體的麻煩?

一般承認的答案

確實。創建一個單獨的文件,例如EmployeeExtension.cs

在此文件中,放置以下代碼:

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

LINQ to SQL和Entity Framework類是使用partial關鍵字生成的,允許您將定義拆分為多個文件,因為設計人員知道您需要通過不斷自動生成基本源文件來向類中添加未被覆蓋的成員。


熱門答案

如果我沒記錯的話,EF創建的類是部分的。因此,您可以添加另一個包含另一個部分類(相同的命名空間,當然是相同的類名)的文件,而不是實現該屬性

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

應該做的伎倆(如果那些單打不可空,請注意!)



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因