C# WPF .NET Framework4.8 から .NET8 へ C# WPF .NET Framework4.8 から .NET8 へ

C# WPF .Net Framework4.8 で Entity Framwork (データベースはOracle) を使用したプログラムを作っていました
Visual Studio 2022 が更新されて .NET8 が使えるようになったので、プログラムの .NET8 への移行をしています
Entity Framework Core を使用することになったため、仕様が変わったところを少しだけ

Oracleから順序番号を取得する

.NET Framework 4.8 (Entity Framework)

                      
        int seq = dbcontext.Database.SqlQuery("SELECT 順序テーブル名.NEXTVAL FROM DUAL").First();
                    
                
.NET 8 (Entity Framework Core)
SQL文字列は$を付けて、FormattableStringにする
.NET Frameworkと同じようにすると、SELECT "t"."Value" FROM(実行したいSQL文) "t" FETCH FIRST 1 ROWS ONLYとなって、Oracleの実行時にエラーになるため
ToList()を間に入れて、結果を1度Listにしてから順序番号を取り出す
                      
        int seq = dbcontext.Database.SqlQuery($"SELECT 順序テーブル名.NEXTVAL FROM DUAL").ToList().First();
                    
                

Entity Framwork Core の ChangeTracker

EntityStateの内容がかわりました

.NET Framework 4.8 (Entity Framework)

状態
Added 4
Deleted 8
Detached 1
Modified 16
Unchanged 2


.NET 8 (Entity Framework Core)

状態
Added 4
Deleted 2
Detached 0
Modified 3
Unchanged 1

EntityState のチェックで HasFlag は使用できません。== 等の比較演算子を使用します。


Process.Startの変更

.NET Framework 4.8
ファイル名を指定して関連付けられたプログラムが起動されるようにする

                      
        System.Diagnostics.Process.Start("ファイル名");
                    
                
.NET 8
ファイル名を指定して関連付けられたプログラムが起動されるようにしたい場合、ProcessStartInfo.UseShellExecute を true にする
                     
        var proc = new System.Diagnostics.Process();
        proc.StartInfo.FileName = "ファイル名";
        proc.StartInfo.UseShellExecute = true;
        proc.Start();