C#-使用QueryOver的NHibernate OR
作者:互联网
我正在尝试使用QueryOver使用NHibernate 3.3创建带有OR子句的简单选择.因此,对于一个简单的选择,例如:
Select x,y,z from myTable where x='one' or y = 'two' or z = 'three'
我想出了这个:
IList<MyTable> list = session.QueryOver< MyTable >()
.WhereRestrictionOn(
Restrictions.Or(Restrictions.On< MyTable >(tab => tab.x == "One"),
Restrictions.On< MyTable >(tab => tab.y == "Two") )
);
它无法编译,并且TBH我怀疑我以任何方式都走错了方向.
解决方法:
这种语法应该解决它
var list = session.QueryOver<MyTable>()
.Where(
Restrictions.Or(
Restrictions.Eq(Projections.Property<MyTable>(tab => tab.x), "One"),
Restrictions.Eq(Projections.Property<MyTable>(tab => tab.y), "Two")
)
)
.List<MyTable>()
如果我们想要更多,则析取是我们实现多重或的方法:
var list = session.QueryOver<MyTable>()
.Where(Restrictions.Disjunction()
.Add(Restrictions.Eq(Projections.Property<MyTable>(tab => tab.x), "One"))
.Add(Restrictions.Eq(Projections.Property<MyTable>(tab => tab.x), "Two"))
.Add(Restrictions.Eq(Projections.Property<MyTable>(tab => tab.x), "xxx"))
)
.List<MyTable>()
标签:queryover,nhibernate,c 来源: https://codeday.me/bug/20191121/2048991.html