Baa*_*ali 8 vb.net asp.net-mvc llblgenpro automapper
我试图在我的一个函数中返回一个IQueryable对象并使用映射(Automapper).它设法返回一个IEnumerable对象,但是当我尝试返回一个IQueryable对象时,它会抛出一个错误:
这是错误:
缺少类型映射配置或不支持的映射.
映射类型:LLBLGenProQuery 1 -> CostCentre
SD.LLBLGen.Pro.LinqSupportClasses.LLBLGenProQuery1 [[Mail.DAL.EntityClasses.TblCostCentreEntity,Mail.DAL,Version = 1.0.4638.16064,Culture = neutral,PublicKeyToken = null]] - > Mail.Model.CostCentre
目标路径:CostCentre
来源价值:SD.LLBLGen.Pro.LinqSupportClasses.LLBLGenProQuery`1 [Mail.DAL.EntityClasses.TblCostCentreEntity]
这是代码:
Dim metaData As New LinqMetaData Dim q = from p in metaData.TblCostCentre _ Select p Mapper.CreateMap(Of TblCostCentreEntity,CostCentre)()
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
Run Code Online (Sandbox Code Playgroud)
对于任何可能错过评论链接的人,您可以使用 Automapper [QueryableExtensions][1],特别是ProjectTo。例如:
var collection = _db.Patients
.ProjectTo<PatientDto>(_mapper.ConfigurationProvider);
Run Code Online (Sandbox Code Playgroud)
这将从数据库实体创建一个 IQueryable 投影。
为了让 Automapper 真正执行映射,它必须查看 IQueryable 中的每个元素。一旦您迭代了可查询的对象,它就不再可查询,因为它已经被查询过。