【发布时间】:2014-12-14 17:36:29
【问题描述】:
我有一张这样的桌子:
TABLE_XY
|ID |SOURCE|
|1 |value_aa|
|2 |other_aa|
|3 |eeeaa|
生成的查询应该是:
select * from TABLE_XY where SOURCE like '%\_aa' ESCAPE '\'
我知道有两种选择可以满足我的需要
var result =
session.QueryOver<TableXy>()
.WhereRestrictionOn(x => x.Source)
.IsLike("%\_aa", MatchMode.Exact, '\\')
.List();
或
var result2 = session
.CreateCriteria<TableXy>()
.Add(LikeExpression("Source", "%\\_aa", MatchMode.Exact, '\\', false))
.List();
但我必须使用基于 Linq 的实现。我正在使用动态创建的表达式树,有时会使用 Linq to Object Provider 或 Linq to Nhibernate 执行。 但目前只支持这种方式:
var result = session
.Query<TableXy>()
.Where(x => NHibernate.Linq.SqlMethods.Like(x.Source, "%\\_aa"))
.ToList();
如何扩展 Nhibernate Linq Provider 以支持?
SqlMethods.IsLike(string source, string pattern, char? escape);
【问题讨论】:
标签: c# sql linq nhibernate fluent-nhibernate