En utilisant ASP.NET, je construis un outil d'administration qui nécessite une fonction pour importer une liste d'adresses email. Lors du téléchargement du fichier, je veux vérifier les enregistrements existants pour l'une des adresses e-mail fournies. Pour les adresses e-mail non existantes, je les créer en utilisant mon DAO.Création d'un processus d'importation qui vérifie les doublons
Fondamentalement je veux:
- liste de réception des e-mails
- extraient des données des e-mails existants
- Créer des données pour les nouveaux e-mails dans db
- retour des données complètes pour tous les e-mails dans la liste.
Depuis que je veux savoir lequel des e-mails existent avant, ma première pensée était d'interroger la table pour tous les enregistrements WHERE Email IN ('Email001FromFile', 'Email002FromFile', 'etc...')
mais la liste pourrait potentiellement contenir des milliers d'adresses e-mail, et je ne suis pas certain assurer l'approvisionnement De nombreuses adresses e-mail à l'opérateur IN seraient une bonne idée. Je pensais aussi à faire une boucle dans la liste et à chercher un enregistrement pour chaque email, mais cela génèrerait potentiellement beaucoup trop de requêtes. Mon idée suivante était de générer une table temporaire pour contenir la liste et modifier la clause IN pour utiliser la table temporaire plutôt qu'une liste explicite d'éléments, mais cela nécessiterait l'exécution directe de SQL ou d'une procédure stockée, Je ne suis pas enclin à le faire puisque j'utilise NHibernate pour accéder à ma base de données. Bien que j'utilise ASP.NET (C#) et NHibernate, et toutes les réponses spécifiques à ce sujet seraient utiles, je suis vraiment à la recherche d'idées générales sur la façon de gérer ce scénario.
Tout simplement parce que vous utilisez NHibernate ne devriez pas vous décourager en utilisant des procédures stockées. Il y a des moments où un SP est la meilleure approche, en particulier des moments comme celui-ci où le problème est que vous ne voulez pas avoir à mettre tous les enregistrements existants en mémoire. Utilisez le bon outil pour le travail, pas seulement l'outil que vous avez en main pour le moment. –
Cela ne prendrait-il pas trop de temps en une transaction avec tous les types d'outils que vous pouvez utiliser? Je suppose que vous devez de toute façon lot avec beaucoup d'enregistrements à importer. – Paco