Je maintiens un ORM interne écrit en C#, et il ne dispose actuellement d'aucun mécanisme de chargement enthousiaste. Pour améliorer les performances, nous avons décidé que cela nécessiterait un chargement passionné, nous devons donc écrire notre propre code pour le supporter. (Mes collègues et moi n'avons aucune expérience avec les outils ORM, et en outre, pour des raisons héritées, nous ne sommes pas autorisés à utiliser des outils populaires comme LinqtoSQL, Entity Framework ou Nhibernate.)Besoin de conseils pour écrire mon propre algorithme de chargement rapide
Ma question est, qui est la meilleure pratique acceptée pour générer des instructions SQL de chargement impatients? Je l'ai pensé et trouver deux façons -
En supposant un exemple classique de 4 tables - A CustomerCategory a de nombreux clients Un client a beaucoup Commander Un ordre a beaucoup OrderDetail
et en supposant que je voulez charger avec impatience les données de toutes les 4 tables, et ma condition est - où Order.OrderDate entre '2008-05-05' et '2008-12-31'
Méthode 1 - Je génère un sql pour aller chercher le les données de toutes les 4 tables, toutes utilisant des jointures internes de sorte que je reçois une ligne pour chaque combinaison unique des clés primaires de chaque table. Je vais appliquer ma condition Where à ce sql.
Méthode 2 - Je génère un SQL pour obtenir uniquement les données de commande en premier, et j'applique ma condition Where à ce sql, puisque le Order.OrderDate provient de la table Order. Ensuite, en fonction des résultats de cette requête, je connaîtrai toutes les valeurs d'identifiant de commande dont j'ai besoin, donc je les utiliserai pour récupérer les données détaillées de la commande. Je connaîtrai également toutes les valeurs d'identifiant client uniques dont j'ai besoin, donc je les utiliserai également pour récupérer les données de la table des clients, et finalement je ferai de même pour la CustomerCategory. Cette méthode nécessiterait 4 instructions SQL dans tous.
Je peux voir que la première méthode est plus efficace, mais un de mes collègues a souligné que la deuxième méthode, bien qu'elle utilise 4 instructions SQL, est plus facile à écrire et à maintenir, ce que je suis d'accord.
Toute idée à ce sujet serait grandement appréciée. Merci!
merci pour votre aide. J'avoue qu'il y a en effet quelque chose qui ne va pas avec notre modèle. Nous allons examiner, et regarderons nhibernate selon votre suggestion. – janem