C# 在实体框架核心中使用Npgsql.NodaTime

C# 在实体框架核心中使用Npgsql.NodaTime,c#,entity-framework-core,asp.net-core-webapi,npgsql,nodatime,C#,Entity Framework Core,Asp.net Core Webapi,Npgsql,Nodatime,我使用EntityFrameworkCore通过Npgsql数据提供程序处理PostgreSQL数据库。根据,建议PostgreSQL日期/时间映射使用NodaTime。在安装指南中,以下代码启用节点时间类型映射: protectedoverride void onconfig(DbContextOptionsBuilder) { UseNpgsql(“Host=localhost;Database=test;Username=npgsql\u tests;Password=npgsql\u t

我使用EntityFrameworkCore通过Npgsql数据提供程序处理PostgreSQL数据库。根据,建议PostgreSQL日期/时间映射使用NodaTime。在安装指南中,以下代码启用节点时间类型映射:

protectedoverride void onconfig(DbContextOptionsBuilder)
{
UseNpgsql(“Host=localhost;Database=test;Username=npgsql\u tests;Password=npgsql\u tests”,
o=>o.UseNodaTime());
}

但是对于
NpgsqlDbContextOptionsBuilder
,没有
UseNodaTime()
扩展方法。我搜索了
npgsql
源代码,但没有找到扩展方法。我在中找到的唯一一个是
公共静态INpgsqlTypeMapper UseNodatime(这个INpgsqlTypeMapper映射器)

我的
.csproj

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>netcoreapp2.1</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <Folder Include="wwwroot\" />
  </ItemGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.App" />
    <PackageReference Include="Microsoft.AspNetCore.Cors" Version="2.1.0-rc1-final" />
    <PackageReference Include="Microsoft.DotNet.Watcher.Tools" Version="2.0.2" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="2.1.0-rc1-final" />
    <PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="2.1.0-rc1" />
    <PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL.NetTopologySuite" Version="2.1.0-rc1" />
    <PackageReference Include="Npgsql.NodaTime" Version="1.0.0-rc1" />
  </ItemGroup>

</Project>

链接中的文档不正确(典型的预发布混乱)。它表明您需要软件包,而实际上您需要软件包:



您需要将所有内容升级到4.0.0-rc1版本并安装软件包。我已经报告了这个问题

那么你的问题是什么?我正在尝试执行,但编译器没有找到UseNodeTime()扩展方法。错误是什么?您是否缺少任何使用方法?我尝试使用Npgsql,
使用Npgsql.NodaTime
,但它不起作用。我已经在我的问题中发布了
Startup.cs
。请尝试从Package manager控制台中安装Package NodeTime,或者在Nuget Package manager中搜索NodeTime并安装它谢谢!现在找到了方法。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.HttpsPolicy;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using Microsoft.EntityFrameworkCore;
using Doko.Models;
using Doko.Filters;
using Npgsql;

namespace DokoDoko {
  public class Startup {
    public Startup(IConfiguration configuration) {
      Configuration = configuration;
    }

    public IConfiguration Configuration { get; }

    // This method gets called by the runtime. Use this method to add services to the container.
    public void ConfigureServices(IServiceCollection services) {
      services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
      services.AddEntityFrameworkNpgsql().AddDbContext<DokoContext>(
        options => options.UseNpgsql(
          Configuration.GetConnectionString("DokoDatabase"), 
          o => { 
            o.UseNetTopologySuite();
          }
        )
      );
      services.AddCors();
      services.AddScoped<AuthorizationFilter>();
      NpgsqlConnection.GlobalTypeMapper.UseNodatime();
    }

    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
    public void Configure(IApplicationBuilder app, IHostingEnvironment env) {
      if (env.IsDevelopment()) {
        app.UseDeveloperExceptionPage();
      } else {
        app.UseHsts();
      }

      app.UseHttpsRedirection();
      app.UseMvc();
    }
  }
}
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL.NodaTime" Version="2.1.0-rc1" />