「NServiceKit OrmLite/基本的な使い方」の版間の差分
編集の要約なし |
|||
| 6行目: | 6行目: | ||
==SELECT== | ==SELECT== | ||
=== | ===SqlExpressionVisitor<T>クラスを用いる=== | ||
OrmLiteのSELECTメソッドはWHERE句に相当する。中身はLINQでも直書きSQLでも受け付ける。 | OrmLiteのSELECTメソッドはWHERE句に相当する。中身はLINQでも直書きSQLでも受け付ける。 | ||
ただSELECTメソッドは[[遅延評価]]ではなく、いきなり実行される。このためLINQを使った場合は、複数の条件式を徐々に組み立てたり、ORDER BY句によるソートなども一切出来ない。これでは使い物にならない。 | ただSELECTメソッドは[[遅延評価]]ではなく、いきなり実行される。このためLINQを使った場合は、複数の条件式を徐々に組み立てたり、ORDER BY句によるソートなども一切出来ない。これでは使い物にならない。 | ||
そのような用途のためにSqlExpressionVisitor<T>クラスが用意されている。 | |||
SqlExpressionVisitorを用いてクエリを組み立て、最後にSELECTメソッドに食わせてやるという、いわゆるSqlBuilderである。 | |||
SqlExpressionVisitorが吐き出すSQL文はデータベースに依存するため、事前にOrmLiteConfig.DialectProviderを適切に設定したうえで、ExpressionVisitor<T>()メソッドでインスタンスを取得するようになっている。 | |||
なお、一部のデータベースではSqlExpressionVisitorの派生クラスが完璧に実装されていない開発途上のものも存在するので注意を要する。とりあえずMySQLのものはそこそこ動くようだ。 | |||
<source lang="csharp"> | <source lang="csharp"> | ||