我使用实体框架采用代码优先方法。我希望在我的模型中有一个属性/属性,但是当我执行迁移时,我不希望它成为我数据库中的列?
示例模型:
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; }
}
在上面的示例中,如何在不将它们作为数据库中的列的情况下拥有SelectedSkills
和Repeat
属性?
我可以使用private
关键字实现这一目标吗?
谢谢
答案 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();