[英]ASP.NET MVC5 - How to enforce Entity Framework to ignore properties in model?
我正在以代码优先的方式使用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; }
}
在上面的示例中,如何在不具有SelectedSkills
和Repeat
属性的情况下将其作为数据库中的列?
我可以使用private
关键字实现吗?
谢谢
您可以使用NotMapped
属性从模型中排除字段。
using System.ComponentModel.DataAnnotations.Schema;
[NotMapped]
public string SelectedSkills { get; set; }
看来您正在将视图模型与实体模型混合在一起,这是错误的。
您的视图模型应该是一个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();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.