Mapeando um DTO para uma entidade com o Automapper

Eu tenho um POCO de estrutura de entidades com a estrutura a seguir.

public class Entity
{
    public virtual int Id { get; set; }
    public virtual string Name { get; set; }
}

Eu criei um Objeto de Transferência de Dados para essa entidade a ser usada por minhas visualizações.

public class EntityDto
{
    public int Id { get; set; }
    public string Name { get; set; }
}

Agora, tenho o seguinte código de mapeamento no meu arquivo Global.asax.

Mapper.CreateMap<Entity, EntityDto>();
Mapper.CreateMap<EntityDto, Entity>(); // not sure whether I need this as well?

Tudo está funcionando bem, eu passo o DTO para minhas visões OK e posso criar uma nova instância deEntity do meuEntityDto modelo. O problema surge quando tento editar meuEntity; Estou ciente de que isso se deve ao AutoMapper perder a chave de entidade que a EF cria para rastrear as alterações no objeto, mas, depois de ler algumas fontes, não parece haver uma solução definitiva. Aqui está a ação que estou usando para editar minha entidade.

public ActionResult EditEntity(EntityDto model)
{
    var entity = context.Entities.Single(e => e.Id == model.Id);
    entity = Mapper.Map<EntityDto, Entity>(model); // this loses the Entity Key stuff
    context.SaveChanges();

    return View(model);
}

Agora, o que eu faço para resolver isso? Eu posso:

De alguma forma, diga ao AutoMapper para.Ignore() as propriedades da chave de entidade?Obter o AutoMapper para copiar as propriedades da chave de entidade?.Attach() meu mapeadoEntity e definir o estado para modificado?

Qualquer ajuda sempre apreciada.

questionAnswers(3)

yourAnswerToTheQuestion