我正在使用Iqueryable,MVC3和VB.NET。我试图返回一个LLBLGen对象,但是我得到了以下异常
无法强制转换'SD.LLBLGen.Pro.LinqSupportClasses.LLBLGenProQuery1[Mail.DAL.EntityClasses.TblCostCentreEntity]' to type 'System.Linq.IQueryable1Mail.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发布于 2012-09-13 14:53:13
IQueryable
(http://llblgen.com/documentation/3.5/LLBLGen%20Pro%20RTF/hh_goto.htm#Using%20the%20generated%20code/Linq/gencode_linq_gettingstarted.htm#LinqMetaData)
这是一个查询,它将使编译器生成代码,在运行时创建一个表达式实例树,表示整个查询,简而言之就是一个表达式树。表达式树不能直接执行,它必须被解释为执行表达式树中指定的内容。这就是Linq提供者所做的,就像Linq to LLBLGen专业版一样:它接受表达式树,将其转换为它可以理解的元素,解释这些元素,并生成该查询的可执行形式。
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方法来执行查询。这样做的好处是,您可以在其本机容器中获取查询结果,例如实体集合。另一个优点是,要获得结果列表,提供程序不必完整地遍历结果,并复制列表中的结果:返回的结果已经在最初存储它们的容器中。
https://stackoverflow.com/questions/12398426
复制相似问题