【问题标题】:Dotnet Core 3.1 - Updating to 3.1 and setting default values using "HasDefaultValue" doesnt seem to existDotnet Core 3.1 - 更新到 3.1 并使用“HasDefaultValue”设置默认值似乎不存在
【发布时间】:2019-12-08 17:42:22
【问题描述】:

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

“PropertyBuilder”不包含定义 'HasDefaultValue' 并且没有可访问的扩展方法 'HasDefaultValue' 接受“PropertyBuilder”类型的第一个参数可能是 找到(您是否缺少 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);

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

using JobsLedger.CATALOG.Entities;
using Microsoft.EntityFrameworkCore;
using System.Threading;
using System.Threading.Tasks;

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

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

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

【问题讨论】:

  • 不要对Entity Framework Core 问题使用Entity Framework 标签(它甚至在标签描述中明确指出)。
  • 为此道歉.. S.

标签: c# entity-framework-core


【解决方案1】:

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

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

正如您在更新日志here中看到的那样,EF 3.1 没有任何变化

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

顺便提一下,包里this is the current code for 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;
    }

【讨论】:

  • 所以我简单地卸载然后重新安装了一些包,现在它实际上被识别了。谢谢 - 对我来说,这是在盒子外面。
  • 干杯!很高兴我能帮上忙!
  • 您当前使用的是哪个版本的 Entity Framecore?我对 3.1.6 也有同样的问题。
  • @Daniel 我理解这个问题。可能我们正在使用 entityframeworkcore 包,但我们应该使用 entityframeworkcore.relational 包。我卸载 efcore 并安装 efcore.relational 并解决了。
  • 我想你可以接受这个答案吗?
猜你喜欢
  • 2021-01-09
  • 2021-06-04
  • 1970-01-01
  • 2020-04-10
  • 1970-01-01
  • 1970-01-01
  • 2021-03-01
  • 2020-04-23
  • 2021-12-14
相关资源
最近更新 更多