0
복잡한 기준에 따라 데이터 집합을 필요로 할 때 최상의 성능을 얻게되는 결과는 무엇입니까? 두 가지 선택이 있습니다 : 복잡한 ICriteria 또는 Session.Linq 문을 만들거나 LINQ를 루트 개체에서 사용하고 Hibernate가 지연로드를 처리하도록합니다. (세션을 사용하여)NHibernate 성능 : Session.Criteria와 LINQ 메모리 내
옵션 1 :
var result = Session.Linq<Contractor>().Where(contractor => contractor.account == "[email protected])
//....
.Where(condition => condition.Orders.Any(condition))
//... more conditions
옵션 2 (큰 결과 집합은 SQL 서버에서 가져온된다는 것을 의미 할 수 있습니다 조회 "에서 메모리"할 수있는 사용의 루트 개체) : 변형이 NHPRof에서 경고를 생성하지 않습니다에 메모리
var contractor = Session.Linq<Contractor>().Single(c => c.Id == 1);
contractor.Orders.SelectMany(o => o.NestedCollection)
.Where(c => c.List.Any(condition))
.Where(//..... more complex filtering;
그러나, 세션 변형 너무 많은 성능을 늪지 수 조인 경고를 생성합니다.