2010-07-08 5 views
0

Je suis nouveau avec EntityFramework.Entity framework: Comment utiliser plus d'un contexte?

Mon application a un pool d'instances d'objets de contexte (Chaque contexte a 1 connexion à la base de données). Le problème est que lorsque je mets à jour un objet (et appelle SaveChanges), les données sont mises à jour dans le DB et dans le contexte de mise à jour mais quand je sélectionne d'autres instances, il récupère les anciennes données de l'objet sélectionné.

Exemple:

Imaginons une table appelée TBL.

La table comporte 2 colonnes: id et data.

Il y a 1 ligne: id = 1, data = 2.

EFContext context1 = new EFContext(); 

EFContext context2 = new EFContext(); 

var obj1 = context1.tbl.Where(a => a.id == 1); 

var obj2 = context2.tbl.Where(a => a.id == 1); 

obj2.data = 10; 

context2.SaveChanges(); 

var obj3 = context1.tbl.Where(a => a.id == 1); 

Après l'exécution de ces lignes, obj3.data contient 2, au lieu de 10.

Comment puis-je résoudre ce problème?

Je ne souhaite pas créer une instance de contexte chaque fois que je souhaite accéder à la base de données.

Merci!

Répondre

0

Je pense que Rafraîchissant votre entité devrait faire l'affaire, comme ceci:

//after 
context2.SaveChanges(); 

//refresh obj1 
context1.Refresh(RefreshMode.StoreWins, obj1); 
+0

Merci. Mais si j'ai beaucoup d'objets à l'intérieur, y a-t-il un moyen de rafraîchir toutes les tables? Existe-t-il un moyen de faire en sorte que l'objet récupère les données de la BD chaque fois que j'essaie de sélectionner des données? Merci encore. – Mattan

Questions connexes