【问题标题】:Optional Property but Required Input可选属性,但需要输入
【发布时间】:2019-06-19 10:56:55
【问题描述】:

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

使用 EF Core 和 Razor Pages,有没有办法让 GradYear 在呈现的输入文本框级别是必需的,但在 db 架构中是可选的?

【问题讨论】:

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


    【解决方案1】:

    我可以想到这个可能的解决方案:

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

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

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

    【讨论】:

    • 两种不同的视图模型想法对我有用。但是,使用 int? 声明属性为可选不允许使用 IsOptional(); 扩展方法。
    猜你喜欢
    • 2014-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-03
    • 2011-05-12
    • 1970-01-01
    • 1970-01-01
    • 2015-01-03
    相关资源
    最近更新 更多