【问题标题】:Differents mode of mapping using AutoMapper使用 AutoMapper 的不同映射模式
【发布时间】:2011-07-19 12:33:27
【问题描述】:

我正在使用 AutoMapper 来映射我的 Entity Framework POCO 对象和 ViewModel。

问题 1:

使用它进行映射有什么区别:

Apurador apurador = Mapper.Map<NovoViewModel, Apurador>(novoViewModel);

或者那个:

Mapper.Map(novoViewModel, apurador);

问题 2:

当我不得不使用 AutoMapper 更新实体框架中的实体时,我必须这样做:

Apurador apurador = context.Apurador.Find(id);
Mapper.Map(editarViewModel, apurador);
context.SaveChanges();

这样,我的实体不会丢失 Id 属性,但在这种方式下,Id 属性会丢失:

Apurador apurador = context.Apurador.Find(id);
apurador = Mapper.Map<EditarViewModel, Apurador>(editarViewModel);
context.SaveChanges();

为什么??

【问题讨论】:

    标签: .net asp.net entity-framework automapper


    【解决方案1】:

    首先,最后一个甚至可以编译吗?你实例化了两个同名的类!

    至于Apurador apurador = Mapper.Map<EditarViewModel, Apurador>(editarViewModel); ,它的作用是创建一个Apurador 的新实例,其属性值来自editarViewModelMapper.Map(editarViewModel, apurador); 将属性值从editarViewModel 映射到实际检索到的实体apurador(如果我没有弄混的话)。

    【讨论】:

    • 然后 Mapper.Map(editarViewModel, apurador);不创建新实例?
    • 据我了解 Mapper.Map(source) 返回一个新的 Tdestination 实例,而 Mapper.Map(source, destination);返回目的地。
    猜你喜欢
    • 1970-01-01
    • 2014-09-23
    • 2021-12-23
    • 2021-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多