2009-06-21 4 views
1

Mon application est une solution client/serveur utilisant un service de données ADO.NET. Le service de données expose transactionSummaryData comme suit:Le service de données ADO.NET n'est pas mis à jour dynamiquement

public IQueryable<TransactionSummary> TransactionSummaries 
{ 
    get { return MainForm.transactionSummaryData.Items.AsQueryable(); } 
} 

Le transactionSummaryData est de type TransactionSummaries dont la propriété des éléments est défini comme suit:

public List<TransactionSummary> Items 

Du côté client, j'ai quelques contrôles DataBound à une requête LINQ qui travaille sur les TransactionSummaries:

AvailibilityBox.DataContext = (from salesdata in srv.TransactionSummaries 
           where salesdata.PerformanceID == selectedshow.performancedata.PerformanceID 
           select salesdata); 

Ceci est exécuté plusieurs fois que les changements de selectedshow.performancedata.PerformanceID dans réponse à l'utilisateur naviguant dans l'interface utilisateur.

Tout va bien jusqu'ici. Toutefois, lorsque transactionSummaryData sur le serveur est mis à jour par un autre code dans le serveur, le client continue à afficher des données «périmées» et ne remarque pas la mise à jour. Je suppose que cela est dû à une sorte de mise en cache. Ayant débogué le code, je peux voir le serveur envoyant les bonnes données mais la requête LINQ sur le client continue à renvoyer les données périmées. Redémarrer le client provoque l'affichage des données correctes.

Je pense qu'il me manque quelque chose d'évident ici, mais je ne vois pas comment contrôler la mise en cache sur le client ou invalider l'objet sans refaire la connexion.

Répondre

1

Emre Meric sur les forums Microsoft ont réussi à répondre à ma question:

L'option de fusion par défaut pour DataServiceContext est appendOnly, ce qui signifie que si une entité renvoyée par un La requête est déjà suivie par le contexte, aucune modification ne sera apportée. Vous pouvez définir MergeOption sur OverwriteChanges si vous souhaitez que l'entité soit mise à jour à tout moment depuis le stockage persistant.

MSDN Reference

Questions connexes