假设我的 DAL 中有这个对象(ORM 等)
public class Student
{
public string Name {get;set;}
public string Address {get;set;}
public string Phone {get;set;}
public Parent Parent {get;set;}
}
public class Parent
{
public string Name {get;set;}
public string Address {get;set;}
public string Phone {get;set;}
}
我有一个看起来像这样的 ViewModel
public class StudentDetailVM
{
public string Name {get;set;}
public string Address {get;set;}
public string Phone {get;set;}
public string ParentName {get;set;}
public string ParentPhone {get;set;}
}
在这种情况下,我需要展平对象。我可以使用 Automapper、ValueInjector 之类的工具来执行此操作,或者我可以手动执行此操作。如果要处理许多这样的类,这是一项乏味的工作,但似乎在所有三种方法之间存在性能/开发人员效率的权衡。
我正在寻找有关何时使用Automapper、Valueinjector和手动映射的指导。我敢肯定手动映射是最快的,但是要多少呢?
某些场景是否比其他场景慢得多/快得多(例如扁平化等)?
采用混合方法在层之间映射对象是否有意义?
我问的原因是因为创建了一个名为 emitmapper 的 Codeplex 项目来解决 automapper 中的性能问题,我记得看到一个评论说 automapper 可能需要 0.5ms 来映射一个大类。(需要参考)
我还记得看到一篇文章描述了如果在 70 毫秒内加载而不是 90 毫秒或更长时间,用户如何更有可能留在您的网站上。(我也在寻找这个链接)。如果 automapper 占用了我大部分的页面加载时间,再加上网络延迟,那么我认为有可能不使用 automapper 并为我的大容量页面创建手动类并坚持使用混合方法。
底线:我会自己运行测试,但我对 .NET 内部的了解不够,无法创建可用作可重用指南的准确结果。