是否可以将数据库列配置为允许 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
命名空间。)
此问题与 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?
很遗憾,我不知道。 (查看我的 Microsoft.EntityFrameworkCore.Xyz.Internal
命名空间。)