当源类和目标类完全不同时,如何创建AutoMapper配置?我想在一些外部类(不能更改)和要保留在数据库中的类之间创建映射。我可以保留整个外部类,但是我不想这样做以节省空间。我正在使用.net core 2.0。
例如:我有一个像下面这样的外部类:
A
{
B {
b1;b2;b3;
}
C {
c1;c2;c3;
}
}
以上内容需要映射到我的类,如下所示:
A
{
Optmized_BC{
b1;
b2;
c1;
}
c2;
}
在上述情况下创建AutoMapper配置的最佳方法是什么?我应该为每个源/目标变量对调用CreateMap吗?有没有一种方法可以在一个CreateMap调用中映射所有变量(也许使用一些聪明的linq?)
答案 0 :(得分:0)
您可以将数据作为JSON持久存储在数据库中,然后使用Newtonsoft JSON库将其反序列化到另一个类将很容易。您必须确定是否比为每种情况编写映射器函数更容易。相同的结构/命名将自动反序列化,否则,您可以使用“动态”。
只是给您一个想法:
var result = JsonConvert.DeserializeObject<dynamic>(json);
A a = new A();
a.Optmized_BC.b1 = result.B.ToObject<B>().b1;
我建议使用显式映射器,并用单元测试覆盖