2012-09-13 44 views
6

我想在我的一個函數中使用映射(Automapper)返回一個IQueryable對象。它設法返回一個IEnumerable對象正常,但只要我試圖返回它拋出我的錯誤一個IQueryable對象:使用Automapper返回IQueryable

這是錯誤:

缺少類型映射配置或不支持的映射。

映射類型: LLBLGenProQuery 1 -> CostCentre SD.LLBLGen.Pro.LinqSupportClasses.LLBLGenProQuery 1 [[Mail.DAL.EntityClasses.TblCostCentreEntity,Mail.DAL,版本= 1.0.4638.16064文化=中性公鑰=空]] - > Mail.Model.CostCentre

目標路徑: CostCentre

Source值: SD.LLBLGen.Pro.LinqSupportClasses.LLBLGenProQuery`1 [Mail.DAL.EntityClasses.TblCostCentreEntity]

這是代碼:

昏暗的元數據作爲新LinqMetaData 昏暗Q =從)

Dim t As IEnumerable(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 t 
+0

請參閱[此問題](http://stackoverflow.com/questions/2212126/does-automapper-support-linq/12365931#12365931)以獲得正確的解決方案。 – Alisson

回答

3

p在metaData.TblCostCentre _ 選擇P檔 Mapper.CreateMap(中TblCostCentreEntity,CostCentre)(爲了Automapper實際執行的映射它必須查看IQueryable中的每個元素。一旦你迭代了一個查詢,它就不再可查詢了,因爲它已經被查詢過了。

+0

有道理。謝謝。 – Baahubali

+0

此鏈接進一步解釋了這一點(僅適用於llblgen用戶) - http://www.llblgen.com/tinyforum/Messages.aspx?ThreadID=17364 – Baahubali

+7

不正確:請參閱http://stackoverflow.com/a/12365931/178620爲解決方案。 –

相關問題