c# – 如何在不更改数据库模型的情况下在Entity Framework中添加新的实体属性

我是Entity Framework的新手.我从数据库第一种方法开始,创建了与我选择的表对应的类.我正在使用MVC.我的一个表中有一个Date列.我的要求是我想在gridview(Grid MVC)中显示Day,即如果获取的特定记录的日期是10/27/2015,则Day应该显示Tues.我想这样做,而不是在我的数据库中添加额外的列.
有没有办法解决这个问题.任何帮助将不胜感激.

我生成的模型类如下: –

public partial class QnsNew1
    {
        public int Id { get; set; }
        public Nullable<System.DateTime> Date { get; set; }
        public Nullable<int> PersonelID { get; set; }
        public string CType { get; set; }
        public string Comments { get; set; }
        //public string Day { get; set; }//I want to avoid doing this
        public virtual Personnel Personnel { get; set; }
        public virtual Type Type { get; set; }
    }
最佳答案
更好的方法

虽然这可以通过实体框架轻松完成,但正如其他答案所指出的那样,并且我100%承认,通过创建与常规实体分开的ViewModel并将计算结果放在一起,最好将表示/ UI模型与数据库模型分开那里的财产.

如果您遇到EF,请继续阅读

在EntityFramework Database First模式中,为数据库模型生成的类是分部类.您基本上可以创建另一个具有相同名称的部分类,并在相同的程序集和命名空间中,并在那里添加您的计算属性.

这是一个完整的例子(从这里的答案中借用一周的实施日期):

public partial class MyTable
{
    [NotMapped]
    public string DayOfWeek
    { 
        get 
        { 
            if (Date.HasValue)
                return DateTime.Now.DayOfWeek.ToString();
            else
                return null;
        } 
    }
}

It is important that you make sure the namespace is the same as the generated class. Also you will must annotate that property with NotMapped attribute so that EF does not attempt to map or save that property back to the database.

转载注明原文:c# – 如何在不更改数据库模型的情况下在Entity Framework中添加新的实体属性 - 代码日志