MIT’s blog

個人的なメモかな

もしかすると、Entity Frameworkがって事ではないかも?

少し考えてたのですが、今回自分がやっている事はあくまでEntity FrameworkでSQLiteを扱うって事なんですが、今回のコードファーストやり始め、SQL Server Expressに対しては本当に楽でしたので、このEntity FrameworkはSQL Server 相手なら悪くないパフォーマンスだから世の中の多数の人達は何ら問題なく使っているのかも? マイグレーションとかも不要だったし...でも、サーバー立ち上げてとか避けたくSQLiteに落ち着いたので、ここは自分自身が選んだ道だからやるしかないのかな^^;

ほんの小さなテーブルの1レコード取得してくる位はEnity Frameworkでも行けるんじゃないかと手を抜くと、普通に遅かった。なので、今回全てのDBアクセスはEntity Framework抜きで行く。なら、Microsoft.EntityFrameworkCoreだったかな?これも本来不要だったかもですが、なんだったか必要な時があった気がする。ああ、AsNoTrackingか^^; これも使わないからマイグレーションのみの理由で使う事になるのか。

 

で、基本的なアクセスはSQL文用意してExecuteReader()使ってレコード取得して処理するんですが、以前データ登録ではExecuteNonQuery()で戻り無しだったけど、レコード受けるヴァリアント型を解放しないと

'DataReader already active on this command'

ってエラーが出る。なので、使い終わったらDisposeAsync()で空にしておけば問題ない感じです。

 

追記 2022/02/15 16:39
上記DisposeAsync()ですが、問題は解消されたので間違いではないと思われますが、本来普通にClose()すれば良い感じなのでこちらに変更。