Si j'ai un objet que paresseux charge une association avec de très gros objets, est-il possible de traiter au moment où la charge paresseuse se produit? Je pensais pouvoir utiliser Associatewith ou Liberarbith à partir de Dataloadoptions, mais il existe des restrictions très spécifiques sur ce que vous pouvez faire dans ceux-ci. Fondamentalement, je dois être notifié lorsqu'une entité <> décide qu'il est temps de charger l'objet associé, de sorte que je puisse attraper cet événement et faire du traitement sur l'objet chargé. Je ne veux pas simplement marcher sur l'entité lors de la chargement de l'objet parent, car cela obligera tous les articles chargés de paresseux à charger (vaincre le but de la charge paresseuse entièrement). P>
4 Réponses :
Je ne vois aucun point d'extensibilité pour cela disponible; La seule chose que je peux voir est dans l'entité FK, il existe une méthode créée sur chaque objet individuel qui est tiré du constructeur ... p>
Ainsi, les appels de constructeur créés et personnellement, je ne suis pas sûr à 100% que l'entité définie le chargement crée chaque objet individuel à ce moment-là et incendie l'événement ... P>
hth. p>
Eh bien, cela n'a pas aidé directement, mais cela m'a rappelé que Plinqo a une méthode onlorée que je peux utiliser. Toujours pas parfait, mais cela peut me procurer mon problème actuel.
Il existe un groupe de méthodes d'extensibilité intégrées aux classes de données DataContext et de données générées par LINQ2SQL. P>
http://msdn.microsoft.com/en-us/library /bb882671.aspx p>
http: //csainty.blogspot .COM / 2008/01 / LINQ-TO-SQL-Extending-Data-Classes.html P>
L'une d'entre elles peut être capable de servir le but dont vous avez besoin. p>
abonnez-vous à l'événement ListChanged fort> p>
Entityset Il n'y a aucun risque de forcer la charge à exécuter aussi longtemps que vous évitez de demander à l'énumérateur. P>
http://msdn.microsoft.com/fr -us / bibliothèque / system.componentmodel.asptchangedtype.aspx p>
Ne fonctionnera pas, la fonction de charge () sur l'entité de l'entité, qui énumérera la source ienumérable (= paresseuse), ne soumettra aucun listchigeant.
Il doit remplir une pleuvation intérieure lors du chargement. Je me demande si les dernières extensions RX (Extensions réactives) pourraient aider à détecter le chargement. Voir msdn.microsoft.com/en-us/devlabs/ee794896.aspx a>.
Il remplit effectivement une liste intérieure, ce qui n'améliore aucune notification de liste de liste.
Vous n'êtes certainement pas obligé d'utiliser l'entité LINQ à SQL utilisera la méthode ASSIGN () pour attribuer une source iEnumerable (qui est paresseuse par défaut) à votre collection. À partir de là, vous pouvez implémenter votre propre entité de chargement paresseux avec un crochet personnalisé au point que vous énumérez d'abord la collection source (exécuter la requête). P> par défaut <> code> mais peut utiliser une collection IList <>. J'ai fait une petite réflexion sur l'entité d'entité <> mais n'a trouvé aucun crochet dans la méthode de charge (), qui implémente l'énumération de la source paresseuse de l'entité définie (c'est là que l'entité est réellement interrogée et matérialisée). P>
Vous utilisez le terme Entityset <> où LINQ à SQL utilise la table <>. Utilisez-vous la framework d'entité à la place? Si oui, je crois que j'ai votre réponse.