0

我有以下问题:我在数据库中有一个名为 Person 的表,其中包含所有相关数据,例如名字、姓氏、出生日期、性别等...。我的问题是:是否可以隐藏某些属性,如果可以,我该如何实现。我需要它,因为在我的实体而不是出生日期中,我想要一个名为 age 的属性,它将获取出生日期并计算年龄。另外我想隐藏另一个名为 job 的列,它的默认值为 N 表示否,也可以是 Y 表示是。取而代之的是,我希望拥有相同的列,但具有真或假。我知道我可以实现更改数据库的目的,但就我而言,我不允许这样做。最后一点:是否可以添加在数据库中没有表示的其他列.. 例如,一个计算的,它采用属性薪水并基于它(例如,如果它大于或小于 500 欧元)计算奖金?谢谢 :)

4

1 回答 1

1

将您的上下文和实体放入一个单独的项目中。您描述的Person实体可以按如下方式完成:

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"; } }
}

执行上述操作只会以您想要的数据类型将 FirstName、LastName、AgeInYears、Sex 和 HasJob 公开给其他项目。

要添加数据库中不存在的列,只需使用适当的数据注释,如上所示。

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

希望有帮助。

于 2012-05-20T12:50:17.150 回答