てぃぐれのプログラマwiki

ワクワクに従う

ChangeTracking 変更追跡処理【C#/Blazor/EntityFramework】

経緯

先日、EntityFrameworkの変更追跡がSQLRawを使うと難しくなる話をした。

なにか良いライブラリはないかものかと、ダメもとでぐぐっていたところ、よさげなライブラリをみつけた。

POCO クラスに対する変更追跡ライブラリ ChangeTracking を使ってみた - Qiita

 

ChangeTracking

EntityFrameworkの追跡処理と同じく変更したオブジェクトにStateが付与される。

それにより、UPDATEしたいものやINSERTしたいものを分けることができる。

そして、気に入ったのが、変更を追跡するプロパティをアノテーションをつけることできめることができるので、冗長にならないのがいい。

まだ、多くは使えてはいないが、実装も難しくなかったので、とても良い。

SQLが得意な人には、SQLで記述することで、EFのSQLを打開し遅さを打開することができる。そして、開発のスピードも上がるだろう。selectで取得するときはAsNoTrackingにするこで処理のスピードがあがる。自分でchangetrackingもどきの実装を考えなくて済む。

もし、ごり押しで変更管理をするならどうしようと思っていたところだが、世間ではごり押しも全然あるとこのことで驚いた。

github.com