これは私が達成したいSQLです:
WHERE domain_nm + '\' + group_nm in ('DOMAINNAME\USERNAME1','DOMAINNAME2\USERNAME2')
私の人生では、これに適した表現を見つけることはできません。また、ドメイン名とグループ名を連結する必要があるため、2 つの表現を使用できるとは思いません。
ありがとう!
これは私が達成したいSQLです:
WHERE domain_nm + '\' + group_nm in ('DOMAINNAME\USERNAME1','DOMAINNAME2\USERNAME2')
私の人生では、これに適した表現を見つけることはできません。また、ドメイン名とグループ名を連結する必要があるため、2 つの表現を使用できるとは思いません。
ありがとう!
Expression を 2 つ使用することはできませんか?
criteria
.Add(Expression.In("DomainName", new string[] { "DOMAINNAME", "DOMAINNAME2" }))
.Add(Expression.In("GroupName", new string[] { "USERNAME1", "USERNAME2" })
もう 1 つのオプションは、Expression.Sql を使用することです。
Expression.Sql は次のとおりです。
.Add(Expression.Sql(String.Format("{{alias}}.domain_nm + '\' + {{alias}}.group_nm in ({0})", getSqlInString(userGroups))))
マップに読み取り専用の数式フィールドを追加できます。その方法でクエリを実行できます。流暢なnhibernateを使用すると、このようになります
Map(x => x.FullName).Formula("[domain_nm] + '\' + [group_nm]")
クエリは次のようになります
criteria.Add(Expression.In("FullName", new string[] { "DOMAINNAME\USERNAME1", "DOMAINNAME2\USERNAME2" }))
単一の式が必要なため、2 つの式は機能しないことを指摘したいと思います。
in が発生する前に、DomainName と GroupName を連結する必要があります。ドメイン アカウントのユーザー名を考えてみてください。DomainName と GroupName は、それぞれ個別ではなく、合わせて一意です。