可选 属性 但需要输入
Optional Property but Required Input
在我的特定情况下,我从遗留应用程序导入数据。在新应用程序中,我有一个旧应用程序中不存在的模型 属性 (GradYear
)。出于历史目的,我需要将数据从遗留数据库导入新数据库。但是,在新应用程序中 GradYear
是 required
。
使用 EF Core 和 Razor Pages,有没有办法让 GradYear
在呈现的输入文本框级别是必需的,但在数据库架构中是可选的?
我可以考虑这个可能的解决方案:
- 使用 2 种不同的视图模型,一种用于从具有非必填字段的旧版导入,另一种用于具有必填属性的内部新应用程序使用,您只需要确保在映射时分配默认值的非必需视图模型到 DBContext 实体。
另一种方法(未测试)是根据需要装饰您的 属性 但像这样重写 OnModelCreating :
public class YourAppContext : DbContext
{
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
...
modelBuilder.Entity<YourDbContextEntity>.Property(p => p.GradYear).IsOptional();
...
}
}
在我的特定情况下,我从遗留应用程序导入数据。在新应用程序中,我有一个旧应用程序中不存在的模型 属性 (GradYear
)。出于历史目的,我需要将数据从遗留数据库导入新数据库。但是,在新应用程序中 GradYear
是 required
。
使用 EF Core 和 Razor Pages,有没有办法让 GradYear
在呈现的输入文本框级别是必需的,但在数据库架构中是可选的?
我可以考虑这个可能的解决方案:
- 使用 2 种不同的视图模型,一种用于从具有非必填字段的旧版导入,另一种用于具有必填属性的内部新应用程序使用,您只需要确保在映射时分配默认值的非必需视图模型到 DBContext 实体。
另一种方法(未测试)是根据需要装饰您的 属性 但像这样重写 OnModelCreating :
public class YourAppContext : DbContext
{
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
...
modelBuilder.Entity<YourDbContextEntity>.Property(p => p.GradYear).IsOptional();
...
}
}