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



此问题与 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命名空间的问题的评论。

相关内容

  • 没有找到相关文章

最新更新