ef_core

Npgsql(ef core)を利用してエンティティのバージョン管理を行う

SQL Serverを利用していると特に工夫することなく利用できるエンティティのバージョン管理(Concurrency Tokens - EF Core | Microsoft Docs)ですが、PostgreSQLでは少し工夫が必要です。 PostgreSQLではMisc | Npgsql Documentationに記載のある通り、内部…

DbContextのTracking設定をすべてのエンティティに設定する

テストプログラムなどで更新処理を実行するときにContextのTrackingが有効な場合、Contextから更新後のデータを取得するときに最初に取得した情報をContextが保持していてテストがFailになる事があります。忘れた頃に発生する事象で、たいてい急いでいるとき…

EF Core2で実行したSQLの引数をログに出力する

EntityFramework Coreで実行したクエリのログを出力する設定は以下の通りDbContextクラスのOnConfiguringをオーバーライドしてoptionsBuilder.EnableSensitiveDataLogging();を設定すればOKです。ただ、SensitiveDataLoggingというパラメーター名からも分か…

migrationのテーブル名や列名をLowerSnakeCaseに設定する

EF Coreを利用してCodeFirstでMigrationによりデータベースのテーブルを作成するときですが、テーブル名と列名がC#のプロパティ名となるため、デフォルトではUpperCamelCaseになります。 これを変更するにはテーブル名であれば{Table("table_name")、列名で…

異なるプロジェクトにあるContextでMigrationを実行する

複数のプロジェクトで構成されたソリューションのうち、Startupプロジェクト以外でef migrationsを実行する場合には以下のようにDbContextを含むプロジェクトでマイグレーションコマンドを実行する必要があります。 SampleSln -- StartupProject -- Reposito…