Entity Framework Core - DefaultValue(true) 属性无效。

16

什么是在实体框架核心中使用Code-First方法设置数据库列默认值的方式?

尝试 #1: 在模型上使用DefaultValue属性似乎不起作用。

[DefaultValue(true)]
public bool ShowInReports { get; set; }

运行迁移后,dotnet ef版本5.0.1将生成以下代码:

    migrationBuilder.AddColumn<bool>(
        name: "ShowInReports",
        table: "ParametersUsed",
        nullable: false,
        defaultValue: false);

尝试 #2: 在 OnModelCreating 中定义值时无法识别函数:

    modelBuilder.Entity<TableName>()
        .Property(t=> t.ShowInReports)
        .HasDefaultValue(true);

错误: 'PropertyBuilder<bool>'不包含定义为'HasDefaultValue'的内容,也没有可访问的扩展方法'HasDefaultValue'可以接受类型为'PropertyBuilder<bool>'的第一个参数(您是否缺少using指令或程序集引用?)

2
你是否已经添加了 Microsoft.EntityFrameworkCore.Relational 包? - Riwen
刚刚发现在第二次尝试中需要使用关系包。谢谢@Riwen。 - Ovi
3
有没有想法如何在不使用OnModelCreating中的HasDefaultValue的情况下使DefaultValue属性起作用? - Ovi
2个回答

13

由于我的回答似乎也是答案,所以再发一遍。

您需要添加 Microsoft.EntityFrameworkCore.Relational 包,才能使用 HasDefaultValue 扩展方法。

至于 DefaultValue 属性,我不确定它是否适用于 EF Core 或者 EF 通用。但我可能是错的。


-3

public bool ShowInReports { get; set; } = true; 尝试一下。


5
测试过了,不起作用。 - Luc vd Enden

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接