[英]Using Npgsql.NodaTime in Entity Framework Core
我正在使用Entity Framework Core通過Npgsql數據提供程序與PostgreSQL數據庫一起使用。 根據日期/時間映射指南 ,建議將NodaTime用於PostgreSQL日期/時間映射。 在安裝指南中,以下代碼啟用NodaTime類型映射:
protected override void OnConfiguring(DbContextOptionsBuilder builder) { builder.UseNpgsql("Host=localhost;Database=test;Username=npgsql_tests;Password=npgsql_tests", o => o.UseNodaTime()); }
但沒有UseNodaTime()
的擴展方法NpgsqlDbContextOptionsBuilder
。 我搜索了npgsql
源代碼,但沒有找到該擴展方法。 我發現的唯一文件是此文件中的 public static INpgsqlTypeMapper UseNodatime(this INpgsqlTypeMapper mapper)
。
我的.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>
Startup.cs
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();
}
}
}
鏈接中的文檔不正確(典型的發行前混亂)。 它指出您需要Npgsql.NodaTime
軟件包,而實際上您需要Npgsql.EntityFrameworkCore.PostgreSQL.NodaTime
軟件包:
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL.NodaTime" Version="2.1.0-rc1" />
您需要將所有內容升級到4.0.0-rc1版本,並安裝Npgsql.EntityFrameworkCore.PostgreSQL.NodaTime軟件包。 我已經在這里報告了這個問題
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.