「Open棟梁 wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次 †
概要 †
- 自動生成Daoにクエリを再利用する
クエリ・キャッシュ機能が追加された(v02-50から利用可能)。
- 本機能を利用する事によって、
「列数が多過ぎるテーブルに対して、D層自動生成機能に拠るDao生成を行って、それを利用すると、
内部で使用される"動的パラメタライズド・クエリ"の実行エンジン内部で"性能問題が発生する"」
と言う問題が解決される。
※ 本修正は、v02-50に含まれる予定ですが、
テンプレート修正だけなので旧バージョンと互換性があり、
v02-50以前の旧バージョンにも適用可能となっている。
詳細 †
利用方法 †
自動生成ツールの設定変更 †
DaoGen_Toolのapp.configを以下の様に変更し、使用するテンプレートを変更する。
↓ ↓ ↓
クエリ・キャッシュIDを指定 †
クエリ・キャッシュを行う箇所で、自動生成Daoのコンストラクタにクエリ・キャッシュIDを指定する。
↓ ↓ ↓
コレにより、
扱う事が出来る。
仕様詳細 †
- クエリ・キャッシュは各自動生成Daoに、staticメンバのConcurrentDictionary?として仕込まれている。
- ConcurrentDictionary?のキーは、「クエリ・キャッシュID + 読込ファイル名」となっている。
- クエリ・キャッシュを行う箇所で、一意のクエリ・キャッシュIDを指定する。
- 通常は、一意の異なるクエリ・キャッシュIDを指定する。
- 同じクエリ・キャッシュIDを使用して異なる箇所で同じクエリ・キャッシュを利用することもできる。
- ただし、双方の個所で、当該自動生成Daoに指定するパラメタ・セットが同じになる必要がある。
- また、異なる自動生成Daoに同じクエリ・キャッシュIDを指定しても同じクエリ・キャッシュを使用することはできない。
- クエリ・キャッシュIDには、以下の様な、
当該個所の当該自動生成Daoに一意性を与え得る値を使用できる。
- GUID(ハード・コーディング)
- 呼出し元のクラス.メソッドの完全修飾名
注意点 †
本機能は、動的パラメタライズド・クエリの、
- パラメタ・セットが同じになる地点でのクエリ・キャッシュを可能にする。
- パラメタ・セットが異なる地点で、
- 同じクエリ・キャッシュIDを使用してクエリ・キャッシュを行うと、
- パラメタライズド・クエリのパラメタ・エラーが発生する。
ことになる。
- Guid.NewGuid?() メソッドはランダム値になり、箇所を特定できないので使用不可。
参考 †