2012-03-06 16 views
3

Iことがあります。NHibernateのクエリ<T> ...

var query = session.Query<MyClass>();  

// Here I need to execute a detached criteria, like that : 
// query.UnderlyingCriteria.Add(SpatialExpression.Within("Geo", extent)); 

var t = query.Select(item => new MyClassView 
             { 
              Name, Year, Code 
             } 

は仕方がクエリとすることをやっていることですか?それとも別の方法ですか?私はのIQueryable結果を必要とする...カバーの下に基準を使用していません

おかげ

答えて

2

LINQプロバイダは、それがHQLパーサーからASTを使用しています。これは

+0

しかし感謝を2つの往復を使用し、I'dだけQueryOverを使用して、IListのを返したい場合、どのようにすることができます:あなたが本当にのIQueryableを必要とするなら、あなたはこの

var ids = session.QueryOver<MyClass>() .UnderlyingCriteria.Add(SpatialExpression.Within("Geo", extent)) .Select(myclass => myclass.Id) .List<int>(); var query = session.Query<MyClass>() .Where(x => ids.Contains(x.Id)) .Select(item => new MyClassView { Name, Year, Code }); 

ノートのようなクエリを定式化することができIList を返しますか?私は試しましたが、エラーが発生しました: "新しいMyClassView()からメンバーを特定できませんでした" – Paul

+0

このような見た目でDTOに投影する唯一の方法http://stackoverflow.com/a/5972357/671619 – Firo