我已经开始在NHibernate中为Interbase 7创建一个方言。
Interbase SQL包含一个运算符CONTAINING 'foo'
,它相当于其他SQL版本中的LIKE '%' + 'foo' + '%'
。 LIKE
在Interbase中区分大小写,而CONTAINING
则不区分,因此我希望方言将LIKE
情况翻译为使用CONTAINING
。
我对示例方言文件有一个非常好的看法,但我找不到任何相关的东西。任何人都可以提供任何指示吗?
答案 0 :(得分:1)
您可以使用'UPPER'将字符串的两边转换为大写字母。
答案 1 :(得分:1)
没有办法用LITAIN替换LIKE的内部用法(除了修补NH)。
您需要明确调用CONTAINING。一旦你注册了它,它就可以作为HQL中的另一个函数,在Criteria中使用Projections.SQLFunction,并在LINQ中编写相应的生成器(参见http://fabiomaulo.blogspot.com/2010/07/nhibernate-linq-provider-extension.html)