Zuordnen eines DTO zu einer Entität mit Automapper

Ich habe ein Entity Framework POCO mit der folgenden Struktur.

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

Ich habe ein Datenübertragungsobjekt für diese Entität erstellt, das von meinen Ansichten verwendet werden soll.

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

Jetzt habe ich den folgenden Zuordnungscode in meiner Datei Global.asax.

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

Alles funktioniert gut, ich übergebe das DTO an meine Ansichten OK und ich kann eine neue Instanz von erstellenEntity Von meinemEntityDto Modell. Das Problem tritt auf, wenn ich versuche, meine zu bearbeitenEntity; Ich bin mir bewusst, dass dies darauf zurückzuführen ist, dass AutoMapper den von EF erstellten Entitätsschlüssel verliert, um Änderungen am Objekt nachzuverfolgen. Es scheint jedoch keine endgültige Lösung zu sein, einige Quellen durchzulesen. Hier ist die Aktion, mit der ich meine Entität bearbeite.

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);
}

Was mache ich jetzt, um das zu lösen? Kann ich:

Sagen Sie AutoMapper irgendwie dazu.Ignore() die Eigenschaften des Entitätsschlüssels?Soll AutoMapper die Eigenschaften des Objektschlüssels kopieren?.Attach() meine KarteEntity und den Zustand auf geändert setzen?

Jede Hilfe immer dankbar.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage