此问题与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完成吗?
答案 0 :(得分: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
。)