可选属性,但必须输入

时间:2019-01-25 15:18:15

标签: entity-framework asp.net-core razor-pages

在我的特定情况下,我正在从旧版应用程序导入数据。在新应用程序中,我具有旧应用程序中不存在的模型属性(GradYear)。我需要出于历史目的将数据从旧数据库导入到新数据库。但是,在新应用程序中,GradYearrequired

使用EF Core和Razor页面,是否有办法使GradYear在呈现的输入文本框级别是必需的,但在数据库架构中是可选的?

1 个答案:

答案 0 :(得分:2)

我可以考虑以下可能的解决方案:

  1. 使用2种不同的视图模型,一种用于从具有非必需字段的旧版中导入,另一种用于具有必需属性的内部新应用程序使用,您只需要确保在非必需的视图模型中映射到该视图时分配了默认值即可DBContext实体。

另一种方法(未经测试)是根据需要装饰您的属性,但是像这样覆盖OnModelCreating:

public class YourAppContext : DbContext
{
   protected override void OnModelCreating(DbModelBuilder modelBuilder)
   {
      ...
      modelBuilder.Entity<YourDbContextEntity>.Property(p => p.GradYear).IsOptional();
      ...
   }

}