2014-07-16 26 views
1

我知道我需要使用Restrictions.Eq和Projections.SqlFunction,但我一直在尝试几个小时没有任何成功(我的测试应用程序崩溃)。没有人有一个QueryOver例如,将执行以下操作中的Oracle:如何使用Nhibernate QueryOver调用Oracle的regexp_like函数?

SELECT 
    * 
FROM 
    V_LOG_ENTRIES 
WHERE 
    regexp_like(ENTRY_TEXT, '(\WPlaced\W)'); 

更新:好吧,我认为问题的一部分是Restrictions.Eq期望的平等,但在这种情况下,没有平等的,这是只是在WHERE子句中的函数调用...

回答

5

的语法应该是这样的:

// this is inlined string, but could be concatenated from some params 
var sql = @" regexp_like(ENTRY_TEXT, '(\WPlaced\W)') " + 
      " AS isLike"; 
var sqlString = new SqlString(sql); 

// the ICriterion 
var criterion = new NHibernate.Criterion.SQLCriterion(sqlString 
    , new string[] {} 
    , new IType[] {} 
    ); 

// the query 
var query = session.QueryOver<LogEntry>() 
    .Where(criterion) 
    ... 
+0

你是一个活的更安全的人,谢谢!我也会投票,但看起来我还没有足够的声望。 – Xorcist

+0

伟大的,它无论如何先生;)享受NHibernate,伟大的工具... –

+0

甲骨文正则表达式的完整例子很难得到,+1。 :) – zx81

相关问题