xxxxプログラマのメモ

先人に感謝と敬意:自分の困ったこと調べたことのメモ

.NetFramework App To .Net7 App

機会は少ないですが、稀に対応するのでまとめ。

移行

ASP.NET から ASP.NET Core への移行 | Microsoft Learn

Npgsql (PostgreSQL/EF)

Microsoft.EntityFrameworkCore に移行するには、コードの修正量が多く、
System.Data.Entityを維持する際にしたこと。

JSON

[ASP.NET MVC]【徹底解説】JsonResultが生成する列挙型の値を数値ではなく列挙型名でシリアル化する - Qiita

//https://docs.microsoft.com/ja-jp/dotnet/standard/serialization/system-text-json-ignore-properties?pivots=dotnet-6-0#ignore-all-null-value-properties
services.AddMvc(option => option.EnableEndpointRouting = false).AddJsonOptions(options =>
{
    options.JsonSerializerOptions.DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull;
    //日本語のシリアル化回避
    //https://docs.microsoft.com/ja-jp/dotnet/standard/serialization/system-text-json-character-encoding
    options.JsonSerializerOptions.Encoder = JavaScriptEncoder.Create(UnicodeRanges.All);
    //逆シリアル化時の大文字小文字区別しない(個別の箇所への設定必要)
    options.JsonSerializerOptions.PropertyNameCaseInsensitive = true;
    //JSON時のプロパティ名
    options.JsonSerializerOptions.PropertyNamingPolicy = null;
});

c# - NpgSql, Failed to set Database.DefaultConnectionFactory when try to connect with Conection String - Stack Overflow
Entity Framework 6 | Npgsql Documentation
コードベースの構成 - EF6 | Microsoft Learn

public class MyConfiguration : DbConfiguration
{
    public MyConfiguration()
    {
        var name = "Npgsql";
        SetProviderFactory(providerInvariantName: name, providerFactory: NpgsqlFactory.Instance);
        SetProviderServices(providerInvariantName: name, provider: NpgsqlServices.Instance);
        SetDefaultConnectionFactory(connectionFactory: new NpgsqlConnectionFactory());
    }
}

[DbConfigurationType(typeof(MyConfiguration))]
public class MyContextBase<T> : DbContext where T : DbObjectBase