Je voulais juste savoir s'il y avait un moyen de mettre à jour chaque champ / propriété dans une ligne SQL sans avoir à déclarer explicitement "context.FieldName = model.FieldName" pour chaque champ.
Ce que j'ai essayé de faire était:
Mais si je place explicitement chaque champ DTO = dans son champ de model correspondant, cela fonctionne (évidemment). Mais en raison des changements fréquents de database, et de la quantité de champs SQL, je voudrais éviter de mettre à jour manuellement chaque champ et de le maintenir chaque fois que la database est modifiée.
Si vous utilisez la dernière version d'automapper, vous pouvez faire quelque chose comme ceci:
public void UpdateCustomer(Customer customer) { var customerTopdate=dbContext.Customers.Where(c=>c.Id=customer.Id); var result=AutoMapper.Map<Customer>(customer,customerTopdate); dbContext.SaveChanges(); }
Vous pouvez utiliser l' Entity State
de l' entity
pour votre entity
pour la update
à update
ainsi que pour la delete
et l' insert
.
Mettre à jour
dbContext.Entry(yourEntity).State = EntityState.Modified; dbContext.SaveChanges();
Insérer
dbContext.Entry(yourEntity).State = EntityState.Added; dbContext.SaveChanges();
Effacer
dbContext.Entry(yourEntity).State = EntityState.Deleted; dbContext.SaveChanges();
Et n'oubliez pas d'appeler SaveChanges()
à la fin de chaque opération.
Pour plus d'informations, s'il vous plaît visitez
États d'entité et SaveChanges
Merci à tous ceux qui ont répondu. Voici comment je l'ai fait fonctionner en utilisant la dernière version d'AutoMapper:
public void UpdateCustomer(Customer customer) { var customerTopdate=dbContext.Customers.Where(c=>c.Id=customer.Id); if (customerTopdate != null { _mapper.Map(customer,customerTopdate); _context.SaveChanges(); } }