【发布时间】:2021-02-28 17:02:35
【问题描述】:
我正在尝试使用 AutoMapper 将一个类 Function 映射到另一个名为 FunctionDTO 的类。类如下所示:
public class Function
{
...
public int MasterFunctionId { get; set; }
public Function MasterFunction { get; set; }
...
}
public class FunctionDTO
{
...
public int MasterFunctionId { get; set; }
public FunctionDTO MasterFunction { get; set; }
...
}
该映射非常适合MasterFunctionId 等属性,但MasterFunction 始终为空,即使Function 对象在该属性中有值也是如此。
对映射器的调用通过以下方式完成(P.S. 变量 config 被注入到类中):
query.ProjectTo<FunctionModel>(config)
我无法使用以下内容,因为我收到一条错误消息,可能是因为 Mapper 未初始化:
CreateMap<FLHFunction, FunctionModel>()
.ForMember(f => f.PRNummerMaster, opt => opt.MapFrom(src => Mapper.Map<FLHFunction, FunctionModel>(src)));
有什么方法可以配置映射以使其正常工作?我对上一段代码尝试了类似的解决方案,但我一定遗漏了一些东西。
【问题讨论】:
-
ForMember(f => f.PRNummerMaster, opt => opt.MapFrom(src => src)) -
已经试过了,属性还是空
-
@Leaky 谢谢你的客气话。本来就是你说的那样,但一直都是空的。我不使用 mapper.Map,我使用带有 EF 查询的 ProjectTo,并传递了一个包含 AutoMapper 配置文件的配置,其中我只有几个 CreateMap 语句。
-
@Corvo,啊,我明白了;这是
ProjectTo()。对我来说,它无法处理这样的复合模式仍然听起来很奇怪。我有点懒惰,但也许我会调查一下。 :) -
如果没有 AM,您将如何使用 EF linq 查询?
标签: c# entity-framework automapper automapper-7