Nhibernate 或者使用ICriteria组合两种情况
我想执行一个简单的选择,条件分布在3个表中Nhibernate 或者使用ICriteria组合两种情况,nhibernate,icriteria,Nhibernate,Icriteria,我想执行一个简单的选择,条件分布在3个表中 Select a.* FROM TBL_A a JOIN TBL_B b ON a.bId=b.Id JOIN TBL_C c ON a.cId=c.Id JOIN TBL_D d ON c.dId=d.Id WHERE (b.value='X' OR c.value='x') AND d.someFlag=1 假设这些表映射正确,如何使用icriteraapi实现这样的查询 到目前为止,我所拥有的并没有实现所有这些…
Select a.*
FROM TBL_A a
JOIN TBL_B b ON a.bId=b.Id
JOIN TBL_C c ON a.cId=c.Id
JOIN TBL_D d ON c.dId=d.Id
WHERE (b.value='X' OR c.value='x')
AND d.someFlag=1
假设这些表映射正确,如何使用icriteraapi实现这样的查询
到目前为止,我所拥有的并没有实现所有这些…ICriteria查询可能如下所示:
- -如何使用或,我们可以查看以下文档:
- -如何连接和别名表
IList<A> list = sess.CreateCriteria(typeof(A), "a")
.CreateAlias("B", "b") // B is property of A a.B
.CreateCriteria("C", "c") // C is property of A a.C
.CreateAlias("D", "d") // D is property of C c.D
.Add( Expression.Disjunction() // OR statement
.Add( Expression.Eq("b.value", "X" ) ) // a property "value" from "b"
.Add( Expression.Eq("c.value", "x" ) ) // a property "value" from "c"
)
.Add( Expression.Eq("d.someFlag", 1) ) // AND this expression
// we are still selecting just a.*
.SetResultTransformer(Transformers.AliasToBean<A>())
.List<A>()
IList list=sess.CreateCriteria(typeof(A),“A”)
.CreateAlias(“B”,“B”)//B是A.B的属性
.CreateCriteria(“C”,“C”)//C是A.C的属性
.CreateAlias(“D”,“D”)//D是C.D的属性
.Add(Expression.Disjunction()//或语句
.Add(Expression.Eq(“b.value”,“X”)///a属性“value”来自“b”
.Add(Expression.Eq(“c.value”,“x”)//来自“c”的属性“value”
)
.Add(Expression.Eq(“d.someFlag”,1))//和这个表达式
//我们仍然只选择了一个*
.SetResultTransformer(Transformers.AliasToBean())
.List()