検索条件
検索条件とは、式(検索)の集まりです。
式(検索)
式とは、情報タイプや用語・値から構成される具体的な条件です。
関連テーブルの指定
式で、情報タイプに関連するテーブルを指定するには、
- 子のOne 1 - 1の記録の子
- 子のMany 1 - 複数の記録の子
- 子のManyMany 複数 - 複數の記録の子
- 親のOne 1 - 1の記録の親
- 親のMany 1 - 複数の記録の親
- 親のManyMany 複数 - 複數の記録の親
のいずれかを選択します。
これらは、テーブル設定の、関連テーブル設定で、実際に関連するテーブルにしているかどうかは関係ありません。
2つめ以降の式では、「かつ」「または」の右横のチェックボックスにチェックを入れると、関連テーブルの指定ができます。
式のまとまり
式と式との間で、「かつ」「または」の設定を行えますが、これ以外に、式のまとまりを追加して、式のまとまりの間で、「かつ」「または」の設定も行えます。
検索の手順の例
- 最初に、式を追加します。
- 式の1つめは、どの情報タイプの記録を検索するかを指定します。
- その情報タイプを、他のテーブルと関わりなく検索するには、関連テーブル無しを選択します。
- 用語を指定し、その用語の値や条件を指定します。
- 検索を実行します。
検索の仕組みの技術的な解説
検索実行で、整合性をとるための方法について。
開発者向け。
検索実行の流れは次の通りです。
- データベースに問い合わせて、条件に合う記録のIdのリストを取得します。
- そのIdのリストを基に、再度データベースに問い合わせて記録を取得し、画面のリストに表示します。
課題
1と2との間は、ごく短いのですが、この間にデータベースのデータを変更した場合、画面で表示した記録が、検索条件に合わない記録として表示される可能性があります。1の段階では、検索条件に合うのですが、1の処理が終わり、2のデータベースに問い合わせるまでに、記録を変更したばあい、その記録が検索条件に合わなくなっている可能性があります。
解決方法
これを解決するため、1,2のデータベースへの問合せは、IsolationLevelをSerializableにしたTransactionのScopeの中で行っています。
式のまとまりの検索の技術的解説
開発者向けです。
検索を実行した時、式のまとまりごとに、データベースに問い合わせ、結果を取得します。そして、その結果の和集合・積集合から、最終的な結果を算出します。
例えば、次のような処理をするとします。
- 式のまとまり データベースで検索
- 式のまとまり データベースで検索
- 1と2との和集合を最終的な結果とする。
課題
この1と2との間で、他のPCでデータベースを更新すると、1の時点でのデータベースと、2の時点でのデータベースとの差が、検索に反映される可能性があります。これにより、検索結果が不整合になる可能性があります。
解決方法
これを回避するには、1,2のデータベースへの問合せは、IsolationLevelをSerializableにしたTransactionのScopeの中で行います。
ただし、「検索実行で、整合性をとるための方法」でも、同じようにIsolationLevelをSerializableにしているので、それで間に合います。