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

问题描述 投票:1回答:1

这个问题与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,并且表的名称是,例如,Entity。可能它可以使用SQL ALTER COLUMN完成。但它也可以通过Fluent API完成吗?

entity-framework-core ef-fluent-api
1个回答
0
投票

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

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

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

但它也可以通过Fluent API完成吗?

不幸的是,我不知道。 (有关comment名称空间的问题,请参阅我的Microsoft.EntityFrameworkCore.Xyz.Internal。)

© www.soinside.com 2019 - 2024. All rights reserved.