在实体框架计算特性。(Calculated properties in Entity Framewo

2019-07-30 05:22发布

假设我有具有以下属性Employee对象:

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

我想补充一个属性,工资,相当于小时*工资。 在一个普通的业务对象,我会简单的代码了在房地产,但这大概消灭了,如果需要的类进行再生。

有没有办法实现这个没有通过它映射到数据库实体的麻烦去的EF标准的方式?

Answer 1:

确实。 创建一个单独的文件,例如,EmployeeExtension.cs。

在这个文件中,把下面的代码:

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

LINQ to SQL和实体框架类使用partial关键字,允许您分割在多个文件中定义生成,因为设计师知道你将要添加成员未通过不断autogenerating基源文件覆盖类。



Answer 2:

如果我没有记错由EF创建的类是局部的。 所以,你可能添加含有另一部分类另一个文件(同一个命名空间,当然同样的类名),这比实现属性

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

应该做的伎俩(如果这些单打是不是空的,你得注意!)



Answer 3:

我是不是能够得到“阿尔戈的回答最初的工作。 之后,我身边一个小游戏注意到,如果我装修的财产(如WCF),它下面的属性,都能正常运作。

[global::System.Runtime.Serialization.DataMemberAttribute()]

按照“的Argo的指令创建一个单独的文件,(例如EmployeeExtension.cs)。 如所描述的本应被标记的部分。

在这个文件中,把下面的代码:

public partial class Employee 
{
   [global::System.Runtime.Serialization.DataMemberAttribute()]       
   public decimal Salary     
   { 
      get { return Hours*Wage; } 
   } 
}  

希望这可以帮助…。



Answer 4:

您可以实现在实体类的属性。 实体框架将产生局部类允许你添加成员类。 像这样一类添加到您的代码:

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


Answer 5:

这是不是为我工作与实体框架5.对我来说是简单地使用[NotMapped]属性的解决方案。 欲了解更多信息请参阅的Code First DataAnnotations



文章来源: Calculated properties in Entity Framework