ApplyPropertyChanges
J'ai pu me rendre compte que peu de personne savent vraiment utiliser la méthode ApplyPropertyChanges de la classe ObjectContext.
Je vais donc rappeler quelques points.
ApplyPropertyChanges s'utilise dans le cas où vous auriez une entité détachée de son contexte et que vous voudriez sauvegarder les modifications apportées sur celle-ci.
Deux cas de figures s'offrent alors à vous.
- Vous êtes en mode optimiste. Vous récupérez depuis la base l'entité ayant le même EntityKey (via un TryGetObjectByKey par exemple), pour que celle-ci soit chargée dans le contexte, puis vous appelez le ApplyPropertyChanges avec l'entité modifiée.
- Vous n'êtes pas en mode optimiste. Rappelons que la gestion du mode optimiste ou non se fait par propriété. Il faut pour cela passer les propriétés à vérifier avant de faire un SaveChanges à ConcurrencyMode = fixed dans votre EDM. Dans ce cas, il faut garder une copie de l'entité originale, attacher cette copie au contexte puis appeler le ApplyPropertyChanges.
Dans ce dernier cas, mon EntityCloner (même simple), peut s'avérer très pratique.
Autre point très important, la méthode ApplyPropertyChanges ne prend pas en compte les éventuels modifications sur les relations.
Dès que j'aurais un peu de temps, je vais essayer, dans la même idée que mon CloneWithGraph de faire un ApplyPropertyChangesWithGraph.
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :