필자는 필터링 데이터를 전달하는 데 사용되는 클래스가 있습니다. 필터링 옵션을 기반으로 데이터베이스에서 데이터를 검색하려고합니다. 내 FilteringDto 클래스 :SQL 쿼리에서 조건부 쿼리 연결을 사용하여 데이터베이스에서 데이터 가져 오기
public class FilteringDto
{
public int id { get; set; }
public string search_text { get; set; }//only for relevant table
public DateTime date_from { get; set; }
public DateTime date_to { get; set; }
}
나는 cafe_table_group
테이블에서 데이터를 검색 할 수 있습니다. 내 검색어는 다음과 같습니다.
using (ISession session = SessionFactory.OpenSession)
{
using (ITransaction transaction = session.BeginTransaction())
{
groups = session.CreateCriteria<CafeTableGroup>().List<CafeTableGroup>();
if (string.IsNullOrEmpty(filters.search_text))
{
groups = groups.Where(a => a.cafe_table_group_name.Like(filters.search_text)).ToList();
}
if (filters.id != 0)
{
groups = groups.Where(a => a.cafe_table_group_id == filters.id).ToList();
}
transaction.Commit();
}
}
여기에 문제가 있습니다. 필터링 된 데이터를 얻으려면 먼저 테이블의 모든 데이터를 검색 한 다음 조건에 따라 필터링합니다. 단일 쿼리를 사용하여 모든 데이터가 아닌 필터링 된 데이터 만 검색 할 수있는 방법이 있습니까? 미리 감사드립니다.
나는 일을 이해하지 못했습니다. ** NHibernate **는 ** 이후에 데이터를 검색 할 것입니다 .ToList() **가 호출됩니까? –
예, List를 너무 일찍 호출하고 있습니다. 통화를 연기하십시오. 샘플 코드를주의 깊게 읽으십시오. 모든 필터를 추가 할 때 끝에 List를 호출합니다. –
고맙습니다. 그게 내 많은 노력을 덜어 줬어. –