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 中设置默认值?
您是否添加了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)