2009-11-25 11 views
1

LINQ 동적 쿼리 LINQKit 및 LINQ 동적 쿼리 라이브러리를 사용하는 몇 가지 방법을 시도했습니다. 어떤 식 으로든 LINQ 아이디어를 죽이기 때문에 두 번째는 마음에 들지 않습니다. 컴파일 할 때 쿼리를 확인할 수 있어야합니다. LINQKit을 사용하여 시나리오에 대한 좋은 예를 찾지 못했습니다. 또한 나는 반사의 과도한 사용을 좋아하지 않는다.LINQ와 페이징 및 LINQ2SQL이없는 동적 쿼리

내 시나리오는 다음과 같습니다. 비즈니스 로직 및 DAL 논리를 수행하는 웹 서비스가 있습니다. webforms 응용 프로그램은 분리되어 있습니다. 사용자가 필터링하려는 각 필드에 대한 티그 상자가있는 페이지가 있고 각 필터 값을 입력하는 텍스트 상자가 있습니다. 내 웹 서비스에는 일부 List를 전달하는 GetByFilter 메서드가 있습니다. QueryObject는 string : filedName, object : fieldValue가있는 클래스입니다.

내 웹 서비스가 쿼리 개체 목록을 받고 이제 큰 질문이 왔습니다. 필드 개수와 필터 값이 다를 수있는 경우이를 LINQ 쿼리로 변환하는 방법은 무엇입니까?

더 악화 무엇 - 나는 LINQ2SQL를 사용하지 않는하지만 필요한 경우 IQUERY를 반환 할 수 있습니다 저장소에 일부 사용자 지정 DAL 사용 (이 같은 : 저장소에 http://msdn.microsoft.com/en-us/magazine/dd569757.aspx 스크롤).

LINQ2SQL에서 페이징을 사용할 수 있다는 것을 알고 있습니다. var PagedData = query.Skip ((iPageNum - 1) * iPageSize) .Take (iPageSize);

그렇다면 어떻게 동적 쿼리 매개 변수 (및 iPageNum 및 iPageSize)를 LINQ에서 내 기본 DAL 구현으로 가져 와서 dataprovider 특정 방식으로 쿼리를 실행할 수 있습니까? 어쩌면 내 DAL 일부 LINQ 데이터 공급자로 구현할 필요가 (나는 그것을 어떻게 해야할지 모르겠다)?

문제는 - LINQ2SQL에 의존하고 싶지 않습니다. (그렇다면 저장소를 LINQ2SQL의 래퍼로 구현할 수는 있지만) 동시에 DAL 외부의 LINQ 쿼리 기능을 사용하고 싶습니다. 가능한가?

답변

0

그것은 당신이 자신에 IQueryable하는 "사용자 정의 LINQ 공급자"여기

을 만드는 것입니다 무엇을 찾고 있는지, 확실히 가능성의 MSDN 문서 : http://blogs.msdn.com/mattwar/archive/2007/07/30/linq-building-an-iqueryable-provider-part-i.aspx

: http://msdn.microsoft.com/en-us/library/bb546158.aspx 와 매트 워렌의 그것에 블로그 시리즈를 가지고

나는 그것이 얼마나 힘들고 그것이 가치가 있는지를보기 위해 시작하는 것이 좋습니다!

당신이 그것에 대하여 결정하는 경우는,이 ​​블로그 게시물의 읽기 있습니다 http://www.hanselman.com/blog/RealWorldAppsInDaysNotWeeks.aspx 및 ADO.Net 데이터 서비스 (아스 토리아)를

+0

감사에 대한 사용의 경우 참조는, 사용자 정의 데이터 공급자가 밝혀 생각했던 것만 큼 복잡한 것은 아닙니다. – JustAMartin