Har*_*ngi 7 c# entity-framework entity-framework-core
我有一个迁移脚本,我想从列中删除默认值,请帮助
migrationBuilder.AddColumn<bool>(
name: "IsExternalLink",
table: "Link",
nullable: false,
defaultValue: 0);
Run Code Online (Sandbox Code Playgroud)
我想更改该列并删除默认值。
我尝试像这样改变列:
migrationBuilder.AlterColumn<bool>(
name: "IsExternalLink",
table: "Link");
Run Code Online (Sandbox Code Playgroud)
但这并没有删除默认值
Fir*_*ald 10
如果要删除列的值DEFAULT,则必须定义oldDefaultValue.
// drop default
migrationBuilder.AlterColumn<bool>(
name: "col",
table: "my_table",
oldDefaultValue: true, <-- THIS must be defined!
defaultValue: null);
// Resulting Query: ALTER TABLE my_table ALTER COLUMN col DROP DEFAULT
Run Code Online (Sandbox Code Playgroud)
还要确保<type>, name(..) 也正确,因为如果您的书面陈述是垃圾,EfCore不会AlterColumn抱怨任何事情。
此外,如果您的表已包含行并且您想添加一个没有的新列DEFAULT,请执行以下操作:
// add column WITH default for existing rows
migrationBuilder.AddColumn<bool>(
name: "col",
table: "my_table",
type: "boolean",
nullable: false,
defaultValue: true);
// drop default for new entries
migrationBuilder.AlterColumn<bool>(
name: "col",
table: "my_table",
oldDefaultValue: true,
defaultValue: null);
Run Code Online (Sandbox Code Playgroud)
布尔值是值类型,您需要为它们指定一个值,除非您像 @StepUp 提到的那样创建可为空的布尔值。您可以在此处阅读有关值类型的更多信息
但是,如果您想要IsExternal不同的默认值然后为零,您可以在 POCO 类中设置它
public boolean IsExternalLink{ get; set; } = true; // To wahtever default value you choose
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5519 次 |
| 最近记录: |