2008-10-10 36 views
3

這是我想要完成的SQL:的NHibernate標準:串聯兩個列與表達

WHERE domain_nm + '\' + group_nm in ('DOMAINNAME\USERNAME1','DOMAINNAME2\USERNAME2') 

我不能爲我的生活找到這個合適的表達。我不認爲我可以使用兩個表達式,因爲域名和組名需要連接。

謝謝!

回答

3

你不能使用兩個表達式嗎?

criteria 
    .Add(Expression.In("DomainName", new string[] { "DOMAINNAME", "DOMAINNAME2" })) 
    .Add(Expression.In("GroupName", new string[] { "USERNAME1", "USERNAME2" }) 

另一種選擇是使用Expression.Sql。

0

我只想指出,兩個表達式不會工作,因爲我需要一個單一的表達式。

DomainName和GroupName需要在in之前連接。考慮域帳戶上的用戶名。 DomainName和GroupName一起是唯一的,不是每個都是分開的。

2

的Expression.Sql如下:

.Add(Expression.Sql(String.Format("{{alias}}.domain_nm + '\' + {{alias}}.group_nm in ({0})", getSqlInString(userGroups)))) 
0

你可以在地圖中添加只讀公式字段。你將能夠以這種方式進行查詢。它看起來像這樣使用功能NHibernate

Map(x => x.FullName).Formula("[domain_nm] + '\' + [group_nm]") 

查詢會再看看這樣

criteria.Add(Expression.In("FullName", new string[] { "DOMAINNAME\USERNAME1", "DOMAINNAME2\USERNAME2" }))