2012-05-16 56 views
0

我有以下问题:我在数据库中有一个名为Person的表,它具有所有相关数据,如名,姓,出生日期,性别等。我的问题是:是否有可能隐藏一些属性,如果是,我怎么能实现这一点。我需要这样做,因为在我的实体中,而不是出生日期,我想要一个称为年龄的属性,它将采用出生日期并计算年龄。另外,我想要隐藏另一个名为job的工作列,其中默认值N为no,也可以为Y。而不是它,我想有相同的列,但有真或假。我知道我可以实现更改数据库,但在我的情况下,我不允许这样做。最后一点:在那里添加额外的列,这些列在数据库中没有表示形式..例如计算出的属性工资和基于它的工资(例如,如果它大于或小于500欧元)计算奖金?谢谢:)自定义实体框架中的实体

+0

只是更具体我不允许使用视图 – Andrey

回答

1

将你的上下文和实体放到一个单独的项目中。你所描述的实体可以做如下:

public class Person 
{ 
    public string FirstName { get; set; } 

    public string LastName { get; set; } 

    internal DateTime DateOfBirth { get; set; } 
    [System.ComponentModel.DataAnnotations.Schema.NotMapped] 
    public double AgeInYears { get { return DateTime.Now.Subtract(this.DateOfBirth).TotalDays/365; } } 

    public char Sex { get; set; } 

    internal string Job { get; set; } 
    [System.ComponentModel.DataAnnotations.Schema.NotMapped] 
    public bool HasJob { get { return this.Job == "Y"; } } 
} 

做上述只会暴露名字,姓氏,AgeInYears,性别和HasJob给其他项目,在你想要的数据类型。

要添加数据库中不存在的列,只需使用相应的Data Annotation,如上所示。

要隐藏一列,请将其标记为内部。

希望有所帮助。