Je voudrais savoir quand les entités d'une certaine table de base de données sont créées ou mises à jour. L'application est essentiellement un CMS, et j'ai besoin de savoir quand des modifications sont apportées au contenu afin que je puisse les réindexer pour les recherches. Je sais que la classe LINQ à EF autogénérée a des méthodes substituables pour quand certains champs changent, mais j'ai besoin de savoir quand l'objet entier est créé/mis à jour, pas seulement un seul champ. J'ai essayé de le mettre dans OnCreated, seulement pour trouver que cela signifiait OnObjectInitialized et non OnObjectInsertedIntoDBTable xDCallbacks sur l'entité créée/mise à jour
J'ai fait quelques recherches et j'ai rencontré this link. La section «État de l'entité» ressemble à ce que je veux, mais je ne suis pas sûr de savoir comment utiliser cette information. Où dois-je remplacer ces méthodes?
Ou peut-être existe-t-il un autre/meilleur moyen?
(Je dois également le savoir pour une autre partie du système, qui enverra des notifications lorsque certains contenus sont modifiés.Je préférerais que ce code s'exécute automatiquement lorsque l'insertion/mise à jour se produit au lieu de le placer dans un contrôleur. En espérant que j'appelle toujours cette méthode.)
Je suis toujours perdu: -/Je ne comprends pas complètement EF pour être honnête, et j'utilise ASP.NET MVC 2 (.NET 4) donc je crois que tout cela est généré pour moi via le Concepteur .dbml (crée une classe qui hérite de System.Data.Linq.DataContext). Suis-je confondre EF avec quelque chose d'autre ou peut-être juste en regardant dans les mauvais endroits? –
@Colin O'Dell - Il existe 4 stratégies de génération différentes, donc ce n'est jamais garanti que le code généré aura ces hooks. Fondamentalement chaque ORM a un concept de suivi d'état en son sein. Un objet est abattu et une référence (sorta) est conservée. ObjectContext d'EF fournit ce suivi d'état. C'est ce que vous devez suivre lorsque les entités sont créées et mises à jour. – jfar
OK merci. Je sais que je peux extraire une entité du contexte de données, la modifier et appeler Save() sur le contexte de données, qui sait exactement ce qui a été modifié. Je vais creuser un peu plus profond et voir ce que je peux trouver. Merci encore pour votre aide! –