Mapping-ein DTO zu einer Entität mit Automapper

Habe ich ein Entity Framework POCO mit der folgenden Struktur.

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

Habe ich einen Daten-Transfer-Objekt für diese Entität verwendet werden, durch die meine Ansichten.

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

Nun habe ich das folgende mapping-code in mein Global.asax-Datei.

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

Alles ist in Ordnung, ich pass das DTO zu meinen Ansichten OK und ich kann eine neue Instanz erstellen Entity aus meiner EntityDto Modell. Das problem entsteht, wenn ich versuche, mein edit Entity; ich bin mir bewusst, dies ist bis zu AutoMapper verlieren die Entität, Schlüssel, EF erstellt, um änderungen zu verfolgen um das Objekt, aber nach der Lektüre durch einige Quellen scheint es nicht zu sein, eine endgültige Lösung. Hier ist die Aktion, die ich zum Bearbeiten meiner Person.

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

Nun, was kann ich tun, um dieses Problem zu lösen? Kann Ich:

  1. Irgendwie sagen AutoMapper zu .Ignore() die Person wichtigen Eigenschaften?
  2. Bekommen AutoMapper zu kopieren aus den Entity-Schlüssel Eigenschaften?
  3. .Attach() meinem zugeordnet Entity und den Status auf geändert?

Jede Hilfe immer sehr geschätzt.

Schreibe einen Kommentar