C# Automapper,用于从外部API返回的Id映射对象
我有两个类,一个db实体和一个dtoC# Automapper,用于从外部API返回的Id映射对象,c#,asp.net,asp.net-mvc,automapper,C#,Asp.net,Asp.net Mvc,Automapper,我有两个类,一个db实体和一个dto public class Employee { public string Name { get; set; } public int DepartmentId { get; set; } } public class EmployeeDto { public string Name { get; set; } public DepartmentDto DepartmentDto { get; set; } } 在这种情况
public class Employee
{
public string Name { get; set; }
public int DepartmentId { get; set; }
}
public class EmployeeDto
{
public string Name { get; set; }
public DepartmentDto DepartmentDto { get; set; }
}
在这种情况下,部门不存储在本地数据库中,而是从外部api服务调用
// DepartmentApiWrapper.cs
public class DepartmentApiWrapper : IDepartmentApiWrapper
{
public async Task<Department> GetDepartment(string id)
// logic here to call from external api and return department
return department;
}
}
//DepartmentApiWrapper.cs
公共类DepartmentApiWrapper:IDepartmentApiWrapper
{
公共异步任务GetDepartment(字符串id)
//从外部api和退货部门调用的逻辑
退货部;
}
}
所以我想做的是,从一个雇员映射一个EmployeeDto
cfg.CreateMap<Employee, EmployeeDto>()
cfg.CreateMap()
当这个映射出现时,让它使用员工中的Id调用DepartmentApiWrapper,获取部门,然后将该部门映射到DepartmentDto并将其分配给EmployeeDto
部门信息来自共享存储库,不能购买到本地数据库中,必须从外部api调用
我在automapper方面没有经验,也不知道从哪里开始,我甚至不知道这是不是可以做到的。我知道我们正在使用静态映射器——一些线索建议使用实例映射器,尽管我不知道如何实现这一点
任何帮助都将不胜感激,谢谢你你几乎可以在a中做任何你想做的事情,尽管通过从外部DB/API丰富图形来调试动态填充
部门数据到
图形的“魔力”可能相当困难。根据建议,假设部门是静态的,数量很少,为什么不在引导MVC应用程序时将它们全部预加载到缓存中,由部门ID
键入-这样,您就可以进行内存中的查找。注意不要让共享部门发生变异!Automapper基本上用于将一个对象映射到另一个对象。一旦您引入调用API来检索映射中定义的数据,那么您可能做错了什么-您违反了单一责任原则。@StuartLC这是一个非常有创意的解决方案-谢谢,我想我可能会这么做。返回的数据将是员工列表,显示他们所在的部门。这可能会产生许多db调用,这将是一场噩梦。--ODawg-你是对的,因为我刚刚开始使用automapper,似乎这违反了这些原则。也许最好避免这种情况。谢谢。您可以在a中做任何您喜欢的事情,尽管通过从外部DB/API丰富图形来调试动态填充DepartmentDto
图形的“魔力”可能相当困难。根据建议,假设部门是静态的,数量很少,为什么不在引导MVC应用程序时将它们全部预加载到缓存中,由部门ID
键入-这样,您就可以进行内存中的查找。注意不要让共享部门发生变异!Automapper基本上用于将一个对象映射到另一个对象。一旦您引入调用API来检索映射中定义的数据,那么您可能做错了什么-您违反了单一责任原则。@StuartLC这是一个非常有创意的解决方案-谢谢,我想我可能会这么做。返回的数据将是员工列表,显示他们所在的部门。这可能会产生许多db调用,这将是一场噩梦。--ODawg-你是对的,因为我刚刚开始使用automapper,似乎这违反了这些原则。也许最好避免这种情况。多谢各位。