Tha*_*dis 4 c# automapper .net-6.0
在我的项目中,我使用实体框架进行 ORM,使用 Dto 类进行 api 响应。我使用 Automapper 在两者之间进行映射。
当我需要直接从 EF 可查询中获取 Dtos 时,我对ProjectTo<>
查询进行了最终操作,一切都很好。
但很多时候,我有一个来自实体框架的已物化对象,我需要将其映射到其 Dto 等效项。在本例中,我使用Map<>
而不是ProjectTo<>
因为内存中有一个实例,而不是转换为 SQL 的 IQueryable。
当我创建 Automapper 配置文件时,我已经注册了投影和地图,如下所示:
CreateMap<UserSession, Models.UserSession>(); // used when mapping between instances
CreateProjection<UserSession, Models.UserSession>(); // used when mapping on EF LINQ expressions
Run Code Online (Sandbox Code Playgroud)
这应该足以让 Automapper 理解,当我使用 ProjectTo 时,我想要投影映射,当我使用 Map 时,我想要实例映射。
但是,相反,当我有一个物化UserSession
对象(在实体框架中注册的类型),并且想要将其映射到一个Models.UserSession
对象(我的 Dto)时,我会得到此响应。
CreateProjection works with ProjectTo, not with Map.
Run Code Online (Sandbox Code Playgroud)
那么,如何在 Automapper 中注册相同类型的地图和投影呢?