2010-04-19 3 views
13

J'ai ce problème où après un champ (disons Field3 dans la table MyTable) est mis à jour sur la base de données, MyTable.Field3 (en C#) retourne toujours l'ancienne valeur.LINQ to SQL ne se met pas à jour lorsque les données ont changé dans la base de données

Je suppose qu'il y a un cache ...?

Comment puis-je le forcer à:
Lire la valeur de la base de données?
OU
Mettez à jour la valeur dans la classe MyTable?

Ou est-ce qu'il y a quelque chose qui me manque? Je suis nouveau à LINQ

Merci d'avance.

Répondre

11
DataContext.Refresh(System.Data.Linq.RefreshMode.OverwriteCurrentValues, entity); 

Si vous souhaitez actualiser votre ensemble toute entité, la façon la plus facile est probablement de créer simplement un nouveau DataContext pour tout et requery.

+2

Il lève cette exception: Un objet spécifié pour l'actualisation n'est pas reconnu. Apparemment, l'enregistrement est modifié à l'aide de Context.SubmitChanges(); Je peux dire si un enregistrement est mis à jour, comment puis-je actualiser la valeur juste pour cet enregistrement juste après sa mise à jour? – Aximili

+0

Existe-t-il un exemple de code? Je ne connais même pas les termes dont j'ai besoin pour google, que dois-je rechercher? Merci – Aximili

+3

Lorsque vous appelez SubmitChanges(), votre objet devrait s'actualiser. Si ce n'est pas le cas, vérifiez la propriété UpdateMode sur les champs de votre modèle de données Linq to SQL pour vous assurer qu'il est défini sur "mise à jour automatique". –

6

Vous ne comprenez pas le modèle. Linq to SQL ne passe pas dans la base de données chaque fois que vous demandez un membre. Lorsque vous récupérez un objet à partir de la base de données, il est stocké en mémoire sous la forme d'un objet Linq to SQL. Vous n'obtenez pas une version à jour de l'objet jusqu'à ce que vous interrogez à nouveau la base de données.

+0

Je vois, c'est ce que je pensais, merci Dave. Alors, comment est-ce que je fais synchroniser la valeur dans la mémoire pour correspondre à celle de la base de données? – Aximili

+1

Vous demanderiez à nouveau l'objet à partir du DataContext. –

+0

Comment faites-vous ça Robert? – Aximili

Questions connexes