使用 EF Core 从 Postgres 搭建 DbContext 时如何关闭 NodaTime?

问题描述 投票:0回答:1

在我的 Blazor Server 应用程序中,我使用 EF Core 和 Npgsql 来以数据库优先方式搭建我的 DbContext 和模型类。当我设置它时,我遵循了 Npgsql 的建议并选择了 NodaTime。这意味着我安装了这些 NuGet 包:Npgsql.EntityFrameworkCore.PostgreSQLNpgsql.EntityFrameworkCore.PostgreSQL.NodaTimeNpgsql.NodaTime

我会为脚手架运行此命令:

dotnet ef dbcontext scaffold [connection-string-redacted] Npgsql.EntityFrameworkCore.PostgreSQL ...

现在我认为NodaTime对于我的具体情况来说太过分了,尽管我完全理解它存在的原因以及它解决的众多问题。我想改为使用 .NET 本机类型(又名 System.DateTime)。

所以我的第一次尝试是注释掉 Program.cs 中我将 Npgsql 配置为使用 NodaTime 的行:

builder.Services
 .AddDbContextFactory<TheDbContext>(options =>
 {
      options.UseNpgsql(dbConnection, conf =>
      {
           //conf.UseNodaTime();
           conf.EnableRetryOnFailure();
           conf.CommandTimeout(2);
      });
 });

在此更改后运行脚手架仍然会为 timestamp 类型的 Postgres 列生成 NodaTime 类 (NodaTime.LocalDateTime)。

我需要做什么才能让 cli 脚手架停止使用 NodaTime

postgresql entity-framework-core nuget nodatime
1个回答
0
投票

事实证明 cli 脚手架并不关心 Program.cs 中配置的内容。它依赖于项目中安装的 NuGet 包。只要仍然安装了Npgsql.EntityFrameworkCore.PostgreSQL.NodaTime,脚手架就会使用NodaTime。即使我没有在 cli 命令中明确指定它(它只有 Npgsql.EntityFrameworkCore.PostgreSQL)。

修复方法是从项目中卸载 NuGet 包 Npgsql.EntityFrameworkCore.PostgreSQL.NodaTime。然后脚手架生成所需的 .NET Native 类型(又名 System.DateTime)。

© www.soinside.com 2019 - 2024. All rights reserved.