1
私はSQL CE 4でNHibernate 3.1を使用しています(MsSqlCe40Dialectの使用)。 Linqを使ってクエリを生成する。SQL CEで無効なSQLを作成するNHibernate/Linq
String.Contains、String.StartsWithまたはString.EndsWithを使用すると、無効なSQLが生成されます。例えば
:
SELECT Name FROM User WHERE (User.Name like ('%'||@p0||'%'))
これが多少生成された実際のSQLから簡略化されますが、問題は、私は期待して余分な'||...||'
であるされています
Session.Query<User>.Where(user => user.Name.Contains("Joe"))
は次のようにSQLを生成これはSQL CEの方言の問題ですが、ここからどこに行くのかはわかりません。修正/回避策のアイデアはありますか?
あなたは、この特定のケースのためにHQLを使用することができます。一方で、私は次のコードで
MsSqlCe40Dialect
をサブクラス化することで問題を回避してきましたか? –これは実際にはより大きなクエリの一部です。私はそれを可能な限りLinqだけにしておきたい。あなたはLinqとHQLまたは基準を組み合わせる方法を知っていますか? – andypaxo
HQLを使用して全体を記述しますか? – Baz1nga