Критерии NHibernate: объединение двух столбцов с выражением IN - PullRequest
3 голосов
/ 10 октября 2008

Это SQL, который я хочу выполнить:

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

Я не могу на всю жизнь найти подходящее выражение для этого. И я не думаю, что могу использовать два выражения в качестве имени домена, а имя группы необходимо объединить.

Спасибо!

Ответы [ 4 ]

3 голосов
/ 18 октября 2008

Разве вы не можете использовать два выражения?

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

Другой вариант - использовать Expression.Sql.

2 голосов
/ 20 октября 2008

Expression.Sql выглядит следующим образом:

.Add(Expression.Sql(String.Format("{{alias}}.domain_nm + '\' + {{alias}}.group_nm in ({0})", getSqlInString(userGroups))))
0 голосов
/ 23 октября 2015

Вы можете добавить поле формулы только для чтения на карту. Вы сможете запросить это таким образом. Это выглядело бы так, используя беглый nhibernate

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

Тогда запрос будет выглядеть так

criteria.Add(Expression.In("FullName", new string[] { "DOMAINNAME\USERNAME1", "DOMAINNAME2\USERNAME2" }))
0 голосов
/ 20 октября 2008

Я просто хотел бы отметить, что два выражения НЕ будут работать, так как мне нужно одно выражение.

DomainName и GroupName должны быть объединены до того, как произойдет вход. Подумайте имена пользователей в учетной записи домена. DomainName и GroupName вместе являются уникальными, а не каждый в отдельности.

...