2010-01-16 4 views
3

Lorsqu'une nouvelle entité dans ma base de données est créée et que je demande une table à partir du datacontext, la nouvelle entité n'apparaît pas. linq met en cache la table et renvoie la version en cache? Si c'est le cas, comment arrêter linq de faire cela.Arrêter linq à partir des tables de mise en cache

DALConnector.Dc.Order.InsertOnSubmit(NewOrder); 
DALConnector.Dc.SubmitChanges(); 

maintenant je clique sur un bouton qui montre une forme avec un gridview sur elle databound à DALConnector.Dc.Order qui ne montre pas le nouvel ordre

Répondre

2

Comment êtes-vous reconsolidation la grille? Il ne cache pas le résultat, donc je ne sais pas pourquoi c'est un problème. Vous devez actualiser le contexte pour obtenir le nouvel enregistrement ... Ou, si vous reliez les enregistrements d'un objet (comme si vous liez des clients), vous pourriez vous en sortir avec ensurihg l'ordre est ajouté à la collection Orders dans l'objet client, et ne pas avoir à requery.

Donc, si vous liez de cette façon:

grid.DataSource = customer.Orders; 

Vous ne gagnez le nouvel ordre de retour si vous avez fait:

customer.Orders.Add(newOrder); 
dc.Orders.InsertOnSubmit(newOrder); 
dc.SubmitChanges(); 

Et puis, vous pourriez lier customer.Orders directement. Le Linq2Sql DataContext ne met pas en cache la table complète, il a seulement un cache des entités récupérées à des fins de suivi des modifications.

0

Si vous souhaitez utiliser un nouveau DataContext pour interroger après avoir inséré la commande, votre résultat sera probablement le même. Comme vous utilisez Linq2Sql, qui ne peut être utilisé qu'avec SQL Server, je recommande d'utiliser SQL Server Profiler et de vérifier si une instruction d'insertion réelle est soumise à la base de données.

Vérifiez votre dbml, utilisez-vous un insert d'exécution ou une procédure stockée pour Order?

Vérifiez également si vous n'aspirez aucune exception que le DataContext peut déclencher sur SubmitChanges().

Si cela n'a pas aidé, veuillez ajouter votre code de requête afin que nous puissions le vérifier également.

Questions connexes