Appel de SaveChanges lorsque les objets de base de données n'ont pas été modifiés

asp.net-mvc-5 c# dbcontext entity-framework-6 savechanges

Question

Je suis en train de coder une application Internet MVC 5 avec EF6 et j'ai une question à propos de ce qui se passe lorsque la méthode context.SaveChanges () est appelée.

L'objet DbContext stocke-t-il les actions CRUD qui se produisent, telles que si la méthode SaveChanges () est appelée et qu'aucune des données de la base de données n'est mise à jour, aucune action ne se produit?

Voici un exemple:

  1. Je crée un objet de modèle simple, puis l'ajoute à la base de données et appelle SaveChanges.
  2. Je récupère cet objet simple, définit l'une des valeurs d'objet pour qu'il soit identique à ce qu'il est actuellement, puis appelle SaveChanges.

Dans l'exemple ci-dessus, des modifications ont-elles été apportées à la base de données? Y a-t-il des transactions de base de données?

J'ai fait des recherches, mais je n'ai pas trouvé de réponse à cette question.

Merci d'avance.

Réponse acceptée

EF6 utilise le suivi des modifications pour détecter les éventuelles modifications.
Lorsque vous appelez SaveChanges (), EF6 appelle en premier lieu DetectChanges () pour inspecter le suivi des modifications.

Maintenant, supposons que vous vouliez vraiment savoir si quelque chose a changé, vous pouvez aussi regarder dans le changetracker. Cet article montre comment dans la réponse:
Entity Framework 6: audit / suivi des modifications


Réponse populaire

Non, si les entités ne sont pas modifiées, leur état n'est pas modifié. EF ne s'y intéresse pas.

Vous pouvez forcer l'enregistrement en modifiant l'état de l'entité manuellement si nécessaire.



Related

Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow