2011-03-29 33 views
5

我有這個例子的代碼...NHibernate的Queryover不區分大小寫ISIN

Result = session.QueryOver<Lfee_Exc>().WhereRestrictionOn(x => x.FirstName) 
.IsIn(ListOfFirstNames).List(); 

有沒有什麼辦法讓我的區分大小寫的Oracle服務器這種情況下insenstive或大寫x.ArNumber?

+0

不認爲這是可能的ISIN作爲操作的ICriteria不可用。 (底層實現QueryOvers被解析爲條件。)有一個IsInsensitiveLike拉姆達限制算子雖然。 – WorldIsRound 2011-03-29 21:17:12

回答

9

轉換ListOfFirstNames以大寫在前,然後:

session.QueryOver<Lfee_Exc>() 
    .Where(Restrictions.In(Projections.SqlFunction(
           "upper", NHibernateUtil.String, 
           Projections.Property<Lfee_Exc>(x => x.FirstName)), 
          ListOfFirstNames)) 
+0

感謝。有沒有的內置sqlfunctions那裏名單?似乎無法在Google上找到詳盡的列表。 – gt124 2011-03-30 16:35:58

+2

@ gt124:它們取決於方言,標準的有在https://nhibernate.svn.sourceforge.net/svnroot/nhibernate/trunk/nhibernate/src/NHibernate/Dialect/Dialect.cs,尋找特定的人https://nhibernate.svn.sourceforge.net/svnroot/nhibernate/trunk/nhibernate/src/NHibernate/Dialect(保留繼承鏈記:MsSql2008從MSSQL2005繼承等) – 2011-03-30 19:51:46

+0

好的謝謝你,會來看看。 – gt124 2011-03-30 20:13:33