微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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 举报,一经查实,本站将立刻删除。