是否可以将数据库列配置为允许 NULL,即使 属性 类型不可为空?

Can a database column be configured to allow NULL even if the property type is not nullable?

此问题与 EF Core Issue #13079: Columns for nested owned types don't allow NULL although owned by derived entity 有关。但它可能更普遍(例如,如果必须匹配现有的建模不佳的数据库)。至少对于具有 TPH 的派生实体中的嵌套拥有类型,它将提供一种配置数据库的方法,使其现在的模式就像链接问题修复后的模式一样:
是否可以将 属性 的数据库列配置为允许 NULL,即使 属性 类型不可为空?如果是,如何?

给定以下类型:

public class SubData
{
    public Int32 Prop { get; set; }
}

是否可以手动配置 SubData.Prop 的数据库列以允许 NULL

IsRequired(false) 无法使用,因为 Int32 不可为空。如果需要,我们可以假设已知列的名称是 Data_SubData_Prop,并且 table 的名称是 Entity。可能可以使用 SQL ALTER COLUMN 来完成。但是Fluent API也能做到吗?

Is it possible to manually configure the database column for SubData.Prop to allow NULL?

是的,它是通过使用 SQL,例如(对于 Microsoft SQL 服务器)

if ( context.Database.EnsureCreated() )
{
    context.Database.ExecuteSqlCommand("ALTER TABLE Entity ALTER COLUMN Data_SubData_Prop int NULL");
}

But can it be done by Fluent API, too?

很遗憾,我不知道。 (查看我的 on the question regarding Microsoft.EntityFrameworkCore.Xyz.Internal 命名空间。)