NHibernateの新機能で、新しいプロジェクトのためにFluentNhibernateを使用しています。非常に単純なlinqクエリを実行すると、私は奇妙な問題に遭遇しました。NHibernate LINQ Containsが機能しない
クエリ1 - は非常にうまく機能
//Query 1
var customers = from customer in _session.Query<Customer>()
where customer.FirstName == "john"
select new
{
customer.FirstName,
customer.LastName
};
クエリ2が実行されたの下に、私は
//Query 2.
var customers = from customer in _session.Query<Customer>()
where customer.FirstName.Contains("john")
select new
{
customer.FirstName,
customer.LastName
};
NHは、クエリが生成された "クエリを実行できませんでした" エラーが出る
、Customer0_.FirstNameをcol_0_0_、customer0_.LastName as col_1_0_ from tblCustomer customer0_ ここでcustomer0_.FirstName l IKE(@ P0 || '%' || '%'); @ P0 = 'ジョン'
それが生成した(@ P0 || '%' || '%')のような姓代わりにFirstNameは( '%' + @ p0 + '%')のようにわかります。私が使用しています
データベースはSQLServerCEとNHibernateのバージョンは3.1.0
である。この問題を解決する助けてください。 SQL CE用
RegisterFunction("concat", new VarArgsSQLFunction(NHibernateUtil.String, "(", "+", ")"));
でなければなりません
RegisterFunction("concat", new VarArgsSQLFunction(NHibernateUtil.String, "(", "||", ")"));
:
使用しているNHibernateはのバージョンは何? – Variant
あなたが使用しているSQL方言の文字列連結のための '* |'は*オプションではありませんか?どのデータベースを使用していますか?実際にクエリが失敗しますか? –
NHibernateを使用しています。3.1.0 – tglk