2008-11-06 5 views
0

Nous voulons lancer une exception, si un utilisateur appelle DataContext.SubmitChanges() et que le DataContext ne suit rien. C'est ... C'est OK d'appeler SubmitChanges s'il n'y a pas d'insertions, de mises à jour ou de suppressions. Mais nous voulons nous assurer que le développeur n'a pas oublié d'attacher l'entité au DataContext.Puis-je vérifier si Linq 2 SQL DataContext est le suivi des entités?

Encore mieux ... est-il possible d'obtenir une collection de toutes les entités que le DataContext suit (y compris celles qui ne sont pas modifiées)?

PS: Le last question I asked ont répondu par: « le faire de cette façon plutôt que » ... s'il vous plaît ne pas :-)

Répondre

1

Je ne pense pas qu'il existe des méthodes publiques/protégées qui vous permettraient d'obtenir directement. Vous auriez probablement besoin d'utiliser la réflexion, comme je l'ai fait environ 3 messages vers le bas here, en regardant la propriété ChangeTracker du Services. Très moche, j'ai peur.

0

Regardez le ObjectTracker ou quelque chose qui se bloque sur DataContext. Il a la liste des changements stockés là-bas.

Aussi, je crois que SubmitChanges est virtuel, donc vous pouvez intercepter l'appel SubmitChanges et y faire des vérifications.

0

je si je comprends bien la question ...

Ils vous montrent ce que le DataContext est suivi

DataContext.GetChangeSet().Inserts; 
DataContext.GetChangeSet().Deletes; 
DataContext.GetChangeSet().Updates; 

Est-ce que votre pensée?

if (DataContext.GetChageSet().Inserts.Count = 0 
     && DataContext.GetChageSet().Deletes.Count 
     && DataContext.GetChageSet().Updates.Count) 
{ 
    throw new Exception("You forgot to do something with your DataContext..."); 
} 
else 
{ 
    DataContext.SubmitChanges(); 
} 
+0

nop, l'OP souhaite le nombre d'objets suivis, qu'ils aient été modifiés ou non. – eglasius

+0

ne serait-ce pas juste DataContext.YourEntities.Count()? Je ne comprends pas ce que vous entendez par suivi ... Le DataContext garde la trace de tous les objets dans la base de données. – bytebender

Questions connexes