EF Core - 我可以使用 LocalDate 类型创建初始迁移,但无法使用相同类型的新字段添加新迁移

问题描述

我使用 EF Core v5.0.5 和代码优先的方法。在我的域类中,我确实有一些包含 LocalDate 类型 (https://nodatime.org/2.2.x/api/NodaTime.LocalDate.html) 的字段,例如:

public class TimeSlot
{
    public Guid Id { get; set; }
    public LocalDate StartDate { get; set; }

    public TimeSlot(LocalDate startDate)
    {
        StartDate = startDate;
    }
}

我完全可以使用非常基本的命令生成初始迁移:

dotnet ef migrations add InitalMigration

然后可以应用迁移,从而正确且成功地创建数据库

但是,一旦我尝试添加相同类型的新字段(例如 LocalDate EndDate),我就会收到以下错误

system.invalidOperationException:无法构建“NodaTime.LocalDate”类型的 C# 文字。提供者应实现 CoreTypeMapping.GenerateCodeLiteral 以支持在设计时使用它。

在 Microsoft.EntityFrameworkCore.Design.Internal.CSharpHelper.UnkNownLiteral(Object value)
在 Microsoft.EntityFrameworkCore.Migrations.Design.CSharpMigrationoperationGenerator.Generate(AddColumnoperation operation,IndentedStringBuilder builder)
在 System.Dynamic.UpdateDelegates.UpdateAndExecuteVoid3[T0,T1,T2](CallSite site,T0 arg0,T1 arg1,T2 arg2) 在 Microsoft.EntityFrameworkCore.Migrations.Design.CSharpMigrationoperationGenerator.Generate(String builderName,IReadOnlyList1 operations,IndentedStringBuilder builder) at Microsoft.EntityFrameworkCore.Migrations.Design.CSharpMigrationsGenerator.GenerateMigration(String migrationNamespace,String migrationName,IReadOnlyList1 upOperations,IReadOnlyList1 downoperations) at Microsoft.EntityFrameworkCore.Migrations.Design.MigrationsScaffolder.ScaffoldMigration(String migrationName,String rootNamespace,String subNamespace,String language) at Microsoft.EntityFrameworkCore.Design.Internal.MigrationsOperations.AddMigration(String name,String outputDir,String contextType,String namespace) at Microsoft.EntityFrameworkCore.Design.OperationExecutor.AddMigrationImpl(String name,String namespace) at Microsoft.EntityFrameworkCore.Design.OperationExecutor.AddMigration.<>c__displayClass0_0.<.ctor>b__0() at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.<>c__displayClass3_01.b__0() 在 Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(Action action)

无法构建“NodaTime.LocalDate”类型的 C# 文字。提供者应实现 CoreTypeMapping.GenerateCodeLiteral 以支持在设计时使用它。

这条消息让我完全无能为力,因为刚才 EF Core 完全可以生成正确的迁移。我很感激任何提示为什么它以我们可以看到的方式工作。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)