Mic*_*han 10 c# nhibernate criteria
我有以下映射类
Trade { ID, AccountFrom, AccountTo }
Account {ID, Company}
Company {ID}
Run Code Online (Sandbox Code Playgroud)
现在我无法弄清楚选择所有交易的方式
AccountFrom.Company.ID = X OR AccountTo.Company.ID = X
Run Code Online (Sandbox Code Playgroud)
我可以使用以下方法让AND工作:
criteria.CreateCriteria("AccountFrom").CreateCriteria("Company").Add(Restrictions.Eq("ID", X);
criteria.CreateCriteria("AccountTo").CreateCriteria("Company").Add(Restrictions.Eq("ID", X);
Run Code Online (Sandbox Code Playgroud)
但是我怎么能把它变成OR而不是AND.我之前使用过Disjunction,但我似乎不知道如何添加单独的标准,只是限制.
Jam*_*Ide 24
尝试:
return session.CreateCriteria<Trade>()
.CreateAlias("AccountFrom", "af")
.CreateAlias("AccountTo", "at")
.Add(Restrictions.Or(
Restrictions.Eq("af.Company.CompanyId", companyId),
Restrictions.Eq("at.Company.CompanyId", companyId)))
.List<Trade>();
Run Code Online (Sandbox Code Playgroud)
我认为你不需要别名公司.
小智 5
我认为您的NHibernate选项取决于您使用的NHibernate版本.
Disjunction = OR,Conjunction = AND
.Add(
Expression.Disjunction()
.Add(companyId1)
.Add(companyId2)
)
Run Code Online (Sandbox Code Playgroud)
与此相同的问题在这里
Jamie Ide刚刚回答得更彻底......它的要点是这样的:
.Add(Restrictions.Or(
Restrictions.Eq("object1.property1", criteriaValue),
Restrictions.Eq("object2.property3", criteriaValue))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
24620 次 |
| 最近记录: |