Dotnet Core 3.1 - 更新到 3.1 并使用“HasDefaultValue”设置默认值似乎不存在

si2*_*030 0 c# entity-framework-core

更新到 Dotnet Core 3.1 并移植我的代码,我发现在 DbContext 中出现以下错误:

“PropertyBuilder”不包含“HasDefaultValue”的定义,并且找不到接受“PropertyBuilder”类型的第一个参数的可访问扩展方法“HasDefaultValue”(您是否缺少 using 指令或程序集引用?)

我发生这种情况的代码如下:

        modelBuilder.Entity<Tenant>().Property(t => t.TenantNo).HasMaxLength(20);
        modelBuilder.Entity<Tenant>().Property(t => t.CompanyName).HasMaxLength(100).IsRequired();
        modelBuilder.Entity<Tenant>().Property(t => t.ContactLastName).HasDefaultValue(false).IsRequired();
        modelBuilder.Entity<Tenant>().Property(t => t.Email).HasMaxLength(500).IsRequired();
        modelBuilder.Entity<Tenant>().Property(t => t.MobilePhone).HasMaxLength(20).IsRequired();
        modelBuilder.Entity<Tenant>().Property(t => t.OfficePhone).HasMaxLength(20);
        modelBuilder.Entity<Tenant>().Property(t => t.CompanyEmail).HasMaxLength(500);
        modelBuilder.Entity<Tenant>().Property(t => t.Address1).HasMaxLength(500);
        modelBuilder.Entity<Tenant>().Property(t => t.Address2).HasMaxLength(500);
        modelBuilder.Entity<Tenant>().Property(t => t.ABN).HasMaxLength(14);
        modelBuilder.Entity<Tenant>().Property(t => t.Database).HasMaxLength(100).IsRequired();
        modelBuilder.Entity<Tenant>().Property(t => t.IsLocked).HasDefaultValue(false);
Run Code Online (Sandbox Code Playgroud)

我在哪里使用过 .HasDefaultValue 我收到这个错误。我相信,我拥有所有必需的指令......

using JobsLedger.CATALOG.Entities;
using Microsoft.EntityFrameworkCore;
using System.Threading;
using System.Threading.Tasks;
Run Code Online (Sandbox Code Playgroud)

似乎在从 3.0 升级到 3.1 时,他们错过了这一点,或者他们正在使用不同的方式设置默认值。

所以在我发布这个之前,我确实做了一个谷歌搜索和一个 Stackoverflow 搜索,但没有结果。

想知道有人可能会建议如何在 3.1 中设置默认值?

Ath*_*ras 6

您是否添加了https://www.nuget.org/packages/Microsoft.EntityFrameworkCore.Relational/在项目中为 3.1 核心包?

我建议您安装和/或删除/安装该软件包,看看它是如何工作的。

正如您在此处的变更日志中所见,EF 3.1 中没有任何更改

为此,我们为 3.1 版本修复了 150 多个问题,但没有要宣布的主要新功能。

顺便说一下,这是包中3.1的当前代码,在那里可以看到扩展的存在。

    public static PropertyBuilder HasDefaultValue(
        [NotNull] this PropertyBuilder propertyBuilder,
        [CanBeNull] object value = null)
    {
        Check.NotNull(propertyBuilder, nameof(propertyBuilder));

        propertyBuilder.Metadata.SetDefaultValue(value ?? DBNull.Value);

        return propertyBuilder;
    }
Run Code Online (Sandbox Code Playgroud)