【发布时间】:2021-09-17 18:17:59
【问题描述】:
我已经创建了一个包含这样列的表
builder.Property(b => b.IndicatorPriority)
.HasColumnName("IndicatorPriority") //Optional, Priority
.HasColumnType("INT")
.IsRequired();
我没有为此列指定任何默认值,但使用add-migration this 生成的迁移具有默认值
migrationBuilder.AddColumn<int>(
name: "IndicatorPriority",
schema: "Internal",
table: "IndicatorStrategyMapping",
type: "INT",
nullable: false,
defaultValue: 0);
如何先在代码中删除这个默认值绑定?
我尝试在列定义中添加这些行
.HasDefaultValue(null)
和
.HasDefaultValueSql(null)
但是这些行没有检测到迁移变化。
如何删除不可为空的列的默认值链接?
更新
正如在一条评论中所问的,为了澄清,我确实想要一个 non nullable 列 no default value 来强制用户在插入记录时为该列提供值
【问题讨论】:
-
我无法理解问题所在,您使用“IsRequired”属性并且还想删除默认值?有什么意义?尝试删除“IsRequired”属性。
-
@SergiyMatvienko - 我不明白为什么很难得到这个问题,是否有一些意想不到的要求有一个必需的列但没有默认值来强制用户在插入记录时提供值?
-
我相信如果您的用户尝试在没有必填字段的情况下插入模型,他会收到一条验证错误消息。但在您的情况下,您运行迁移脚本,它会自动将值插入到必填字段。这就是为什么我无法理解问题是什么,一切都按预期工作。
-
@SergiyMatvienko - 哪些脚本将值插入到必填字段?我发布的脚本是模式创建脚本,而不是插入脚本。当我使用实体框架插入没有这个值的对象时,它不会给我任何错误,而是采用默认值。
-
好的,那么目标是什么?如果你设置了'not null'和'no default value',那么应该有什么值呢?)
标签: c# ef-code-first default-value