AutoMapper会使域模型变得扁平,但它会做相反的事情吗?如果不是,那该怎么办?

时间:2009-07-24 05:36:52

标签: asp.net-mvc viewmodel automapper model-binding domain-model

由于对我之前的一个问题here的回应,我一直在阅读AutoMapper。

它说AutoMapper会使复杂的域模型变得平坦,但我需要做的事情相反的。我需要将我的视图模型(展平的域模型)连接到复杂的域模型,以便我可以快速将视图模型转换为域模型。

是否有类似于AutoMapper的视图模型并使其成为一个复杂的领域模型?

3 个答案:

答案 0 :(得分:4)

你这样做!您可以创建一个MapToModel方法,在其中进行右手/左手编码并将两者同步。

public MyModel MapToModel(MyViewModelForm vmf)
{
  //new up MyModel model;
  model.foo = vmf.foo;

  return model;
}

如果应用程序自己编码,那么我们究竟要做些什么......?

答案 1 :(得分:2)

ValueInjecter做到了,它很容易使用:

//flatenning
personDto.InjectFrom<FlatValueInjection>(person);

//unflattening
person.InjectFrom<UnflatValueInjection>(personDto);

//this is just mapping without flattening/unflattening
foo.InjectFrom(bar)

答案 2 :(得分:1)

不是真的,因为它必须非常传统才有用。在扁平化时很容易识别模式,但另一种方式是'圆形......太多的自定义逻辑。