Comment actualiser le cache ObjectContext à partir de la base de données?

.net c# entity-framework objectcontext

Question

Nous chargeons les données de db:

var somethings = Context.SomethingSet.ToList();

Ensuite, quelqu'un supprime ou ajoute des lignes en dehors du contexte. Le contexte de sortie contient toujours des objets supprimés en mémoire cache, car il ne sait pas qu'ils ont été supprimés. Même si j'appelle Context.SomethingSet.ToList (), notre contexte contient toujours des objets supprimés et les propriétés de navigation ne sont pas correctes.

Quelle est la meilleure méthode pour actualiser l'ensemble de la base de données?

Réponse acceptée

La méthode Refresh correspond à ce que vous recherchez:

Context.Refresh(RefreshMode.StoreWins, somethings);

Réponse populaire

Le contexte de données EF est une mise en œuvre du modèle d'unité de travail. En tant que tel, il n'est PAS conçu pour rester au-delà de l'unité de travail en cours. Une fois votre travail terminé, vous vous attendez à ce que votre contexte de données soit ignoré.

Il s'agit d'une décision de conception fondamentale pour EF v1, EF v4 et LINQ to SQL. Sauf si vous avez des modèles d'utilisation de données très spécifiques et des volumes de mémoire copieux, évitez de conserver vos contextes de données plus longtemps que nécessaire pour compléter votre unité de travail.

http://sdesmedt.wordpress.com/2009/02/18/unit-of-work-pattern/

http://takacsot.freeblog.hu/Files/martinfowler/unitOfWork.html



Related

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