1

For example, I have the following infrastructure class:

[Table("GeoHistory")]
public partial class GeoHistory
{
    public int Id { get; set; }

    public int CompanyId { get; set; }

    public int DriverId { get; set; }

    [StringLength(50)]
    public string Name { get; set; }

    public string Description { get; set; }

    [StringLength(100)]
    public string GeofenceLocation { get; set; }

    [StringLength(100)]
    public string GeofencePrevious { get; set; }

    [StringLength(20)]
    public string StateLocation { get; set; }

    [StringLength(20)]
    public string StatePrevious { get; set; }

    public DateTime? DateTime { get; set; }

    [StringLength(5)]
    public string Heading { get; set; }

    public decimal? Speed { get; set; }

    [StringLength(50)]
    public string Status { get; set; }
}

and the following View class (let's forget about domain layer):

public class GeoHistoryViewModel
{
    public int Id { get; set; }

    public int? CompanyId { get; set; }

    public int? DriverId { get; set; }

    [StringLength(50)]
    public string Name { get; set; }

    public string Description { get; set; }
}

as we can see, we edit only part of field list.

Now, we want to update data in DB. Of course, we can write like:

        Infrastructure.Main.GeoHistory geoHistory = db.GeoHistories.Find(id);
        geoHistory.CompanyId = model.CompanyId;
        geoHistory.DriverId = model.DriverId;
        geoHistory.Name = model.Name;
        ........
        db.SaveChanges();

It works. But I want to use Automapper. And if I try to do the following:

        Infrastructure.Main.GeoHistory geoHistory = mapper.Map<Infrastructure.Main.GeoHistory>(model);
        db.GeoHistories.Attach(geoHistory);
        db.Entry(geoHistory).State = EntityState.Modified;
        db.SaveChanges();

It works, but of course remove values of fields, which are not exist in View Model, but exist in infrastructure class. How to use automapper, but don't lost these fields?

Oleg Sh
  • 8,496
  • 17
  • 89
  • 159
  • 2
    Looks like a duplicate of this one https://stackoverflow.com/questions/18163490/automapper-why-it-is-overwriting-whole-object – Wiktor Zychla Jun 10 '17 at 21:03

0 Answers0