将SQL查询转换为NHibernate条件查询

时间:2011-08-29 14:25:57

标签: c# sql .net nhibernate

我想在nhibernate中执行以下操作。我在nhibernate上使用条件查询。条件查询是否支持此sql语句的等效项?

select * from table where tableid in (1,2,3,4)

3 个答案:

答案 0 :(得分:4)

简单如下:

CurrentSession
  .CreateCriteria( typeof(MappedType) )
  .Add( Expression.In("MappedType.MappedId", new int[] { 1, 2, 3, 4 } ) );

答案 1 :(得分:3)

是的,即:

ISession session = GetSession();
var criteria = session.CreateCriteria(typeof(Product));

var ids= new[] {1,2,3};
criteria.Add(new InExpression("Id", ids));

var products = criteria.List<Product>();

答案 2 :(得分:3)

使用QueryOver界面:

session.QueryOver<MappedType>().AndRestrictionOn(m => m.tableid).IsIn(new int[] { 1, 2 , 3 , 4 }).List();

session.QueryOver<MappedType>().Where(m=> m.tableid.IsIn(new int[] { 1, 2 , 3 , 4 })).List();

或使用Criteria界面:

session.CreateCriteria<MappedType>().Add(Expression.In("tableId", new int[] { 1, 2, 3, 4 } ) ).List<MappedType>();