ASP.NET MVC5 - 如何强制实体框架忽略模型中的属性?

时间:2018-01-27 03:13:17

标签: c# entity-framework

我使用实体框架采用代码优先方法。我希望在我的模型中有一个属性/属性,但是当我执行迁移时,我不希望它成为我数据库中的列?

示例模型:

public class Class
{
    public int Id { get; set; }

    [Required]
    public int SkillId { get; set; }
    public Skill Skill { get; set; }

    public string SelectedSkills { get; set; }

    public int Repeat { get; set; }
}

在上面的示例中,如何在不将它们作为数据库中的列的情况下拥有SelectedSkillsRepeat属性?

我可以使用private关键字实现这一目标吗?

谢谢

2 个答案:

答案 0 :(得分:4)

您可以使用NotMapped属性从模型中排除字段。

using System.ComponentModel.DataAnnotations.Schema;

[NotMapped]
public string SelectedSkills { get; set; }

答案 1 :(得分:1)

您似乎正在将视图模型与错误的实体模型混合在一起。

您的视图模型应该是一个separte类,它在HTML视图中具有所有需要的属性。

您的实体模型应该只包含需要持久性的数据。

所以,你必须创建另一个类。例如:

public class Class
{
    public int Id { get; set; }

    [Required]
    public int SkillId { get; set; }
    public Skill Skill { get; set; }
}

public class ClassModel
{
    public int Id { get; set; }

    [Required]
    public int SkillId { get; set; }

    public string SelectedSkills { get; set; }

    public int Repeat { get; set; }
} 

如果出于任何原因您必须忽略特定属性,则可以添加注释[忽略]或在数据上下文的OnModelCreating方法中使用modelBuilder.Entity<Class>().Property(a=>a.Repeat).Ignore();