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.
Je ne trouve pas la propriété "ObjectTrackingEnabled" sur DataServiceContext j'utilise (pas DataContext). –
Oups ... complètement mal lu les deux premières phrases. – womp