.Net CoreのコンソールアプリケーションでもPostgresqlを使いたい

ASP.NETのWEBアプリだと Startup.cs appsetting.json context.csでコンテナ等の設定すれば比較的簡単にPostgresql使えるんですが、コンソールアプリケーションだとそもそもサービス設定がない

そのため、コンソールアプリケーションでサービスの設定をしてPostgresqlを使えるようにします。

・webアプリケーションでの設定

Startup.cs内
public void ConfigureServices(IServiceCollection services)
{
    services.AddDbContext<PqlContext>(options => options.UseNpgsql(
Configuration.GetConnectionString("PglContext"))
);
}

Models - PglContext.cs内
using Microsoft.EntityFrameworkCore;
using test.Models;

namespace test.DbContexts
{
public class PglContext : DbContext
{
public PqlContext(){}

public PglContext(DbContextOptions<PglContext> options)
: base(options) {
}
public DbSet<TESTD> Testd { get; set; }
}
}

appsettings.json内
"ConnectionStrings": {
"PglContext": "Server=200.200.200.200;Port=2222;Database=tdb;Username=td;Password=eee"
}


・コンソールアプリケーションでの設定
PglContext.cs appsettings.jsonはそのまま使う

Program.cs内
private static test.DbContexts.PqlContext pqlService;

...

var serviceProvider = new ServiceCollection();
serviceProvider
.AddEntityFrameworkNpgsql()
.AddDbContext<PqlContext>(
        options =>
    options.UseNpgsql(
Configuration.GetConnectionString("PglContext")),
ServiceLifetime.Transient
)
;
var services = serviceProvider.BuildServiceProvider();
psqlService = services.GetRequiredService<PglContext>();


使うとき
testparam = pglService.TestDB
.Where(x =>
...



のどかわーくす