此问题与 EF Core 问题 #13079 相关:嵌套拥有类型的列不允许 NULL,尽管由派生实体拥有。但它可能会引起更普遍的兴趣(例如,如果必须匹配现有的建模不良数据库(。至少对于具有 TPH 的派生实体中的嵌套拥有类型,它将提供一种配置数据库的方法,使其架构现在就像修复链接问题后一样:
是否可以将属性的数据库列配置为允许NULL
即使属性类型不可为空?如果是,如何?
给定以下类型:
public class SubData
{
public Int32 Prop { get; set; }
}
是否可以手动配置SubData.Prop
的数据库列以允许NULL
?
不能使用IsRequired(false)
,因为Int32
不可为空。如果需要,我们可以假设列的名称已知是,比如说,Data_SubData_Prop
,并且表的名称是,比如说,Entity
。可能可以使用SQLALTER COLUMN
来完成。但是它也可以通过Fluent API来完成吗?
是否可以手动配置 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来完成吗?
不幸的是,我不知道。(请参阅我对有关Microsoft.EntityFrameworkCore.Xyz.Internal
命名空间的问题的评论。