如何在实体框架中添加新的实体属性而不更改数据库模型

2023-12-27

我是实体框架的新手。我从数据库优先方法开始,该方法创建了与我选择的表相对应的类。我在用MVC。我的一张桌子上有一个Date列在其中。我的要求是我想在我的中显示这一天gridview(网格 MVC)即,如果获取的特定记录的日期是 10/27/2015,那么“日”应显示“星期二”。我想做到这一点,而不是在我的数据库中添加当天的额外列。 有没有办法解决这个问题。任何帮助将不胜感激。

我生成的模型类如下:-

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 并将计算得出的视图模型与数据库模型分开。那里的房产。

如果您对 EF 感到困惑,请继续阅读

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

这是一个完整的示例(在从此处的答案中借用了星期几实现之后):

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

确保命名空间与生成的类相同非常重要。此外,您还必须用以下方式注释该属性NotMapped属性,以便 EF 不会尝试将该属性映射或保存回数据库。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在实体框架中添加新的实体属性而不更改数据库模型 的相关文章

随机推荐