2012-09-13 2 views
0

LLBLGen Pro, MVC 3 및 ​​VB.NET을 사용하고 있습니다. Iqueryable 개체를 반환하려고하는데 예외가 발생합니다.LLBLGenProQuery 대 IQueryable

'SD.LLBLGen.Pro.LinqSupportClasses.LLBLGenProQuery 1[Mail.DAL.EntityClasses.TblCostCentreEntity]' to type 'System.Linq.IQueryable 1 [Mail.Model.CostCentre]'형식의 개체를 캐스팅 할 수 없습니다.

LLBLGenProQuery와 IQueryable 간의 차이점은 무엇입니까? LLBLGenPro를 사용하여 IQueryable 객체를 반환하는 방법은 무엇입니까?

Public Function GetAllCostCentres() As IQueryable(Of Model.CostCentre) Implements ICostCentreRepository.GetAllCostCentres 
     Mapper.CreateMap(Of TblCostCentreEntity, CostCentre)() 
     Dim metaData As New LinqMetaData 
     Dim q = From p In metaData.TblCostCentre _ 
        Select Mapper.Map(Of IQueryable(Of CostCentre), TblCostCentreEntity)(p) 


     'Dim t As IQueryable(Of CostCentre) = Mapper.Map(Of CostCentre)(q) 
     'Select New CostCentre With {.Active = p.Active, .CostCentre = p.CostCentre, .CreatedBy = p.CreatedBy, .DateCreated = p.DateCreated, .DateLastModified = p.DateLastModified, .ModifiedBy = p.ModifiedBy, .CostCentreID = p.CostCentreId} 

     Return q 
    End Function 

답변

0

된 IQueryable

(http://llblgen.com/documentation/3.5/LLBLGen%20Pro%20RTF/hh_goto.htm#Using%20the%20generated%20code/Linq : 내 코드는 다음과 같습니다 /gencode_linq_gettingstarted.htm#LinqMetaData)

컴파일러가 전체 쿼리를 나타내는 Expression 인스턴스의 트리를 런타임에 생성하는 코드를 짧은 쿼리 트리에서 생성하는 쿼리입니다. 표현식 트리는 직접 실행 가능하지 않으며, 표현식 트리 내에서 지정된 것을 실행하도록 해석되어야합니다. 이것은 Linq에서 LLBLGen Pro와 같은 Linq 제공자가하는 것입니다 : 그것은 표현식 트리를 허용하고, 그것을 이해할 수있는 요소로 변환하고, 이러한 요소를 해석하고,이 쿼리의 실행 가능한 형식을 생성합니다.

ILLBLGenProQuery (http://llblgen.com/documentation/3.5/LLBLGen%20Pro%20RTF/hh_goto.htm#Using%20the%20generated%20code/Linq/gencode_linq_gettingstarted.htm#ILLBLGenProQuery)

LinqMetaData에 의해 생성 된 IQueryable 요소에 정의 된 인터페이스. 이 인터페이스를 사용하면 Execute 메서드를 호출하여 쿼리를 실행할 수 있습니다. 이것의 장점은 네이티브 컨테이너에서 쿼리 결과를 얻을 수 있다는 것입니다. 개체 컬렉션. 또 다른 장점은 결과 목록을 얻으려면 공급자가 전체 결과를 트래버스하고 목록의 결과를 복사 할 필요가 없습니다. 반환 된 결과는 처음에 컨테이너에 저장되어 있습니다.