Skip to main content
Jonathan Andrei
Sphera

Sphera

Développeur de données

Juin 2021 à avril 2022CanadaLogiciels d'entreprise en environnement, santé, sécurité et durabilité

Réduction de 30 % du temps de build de production en réécrivant le SQL qu'un ORM générait silencieusement

Spécifications de mappage C# et Entity Framework, réécrites pour que le SQL généré ressemble à ce qu'un DBA recommanderait vraiment. Intégrité des données vérifiée avant et après pour que le gain ne change pas silencieusement le comportement.

C#.NETEntity FrameworkSQL Server

Le problème

Les builds de production étaient assez lents pour nuire à la productivité de toute l'équipe de développement. La couche d'accès aux données existante faisait plus d'allers-retours que les requêtes ne l'exigeaient, et la forme de requête par défaut générée par Entity Framework n'était pas celle qu'un DBA aurait écrite à la main.

L'approche

Développement de spécifications de mappage en C# avec Entity Framework pour optimiser le motif d'accès aux données.

Lecture du SQL réellement généré par Entity Framework en coulisses, réécriture des mappages pour que la sortie ressemble à ce qu'un DBA approuverait, et utilisation de requêtes SQL efficaces pour maintenir et vérifier les données.

Vérification de l'intégrité des données avant et après chaque changement pour que l'optimisation ne change pas silencieusement le comportement.

Le résultat

Temps de build de production réduit de 30 %.

Efficacité globale du développement logiciel améliorée.

Équivalence comportementale maintenue sur la surface d'accès aux données modifiée.

Ce que j'en retiens

Les ORM génèrent silencieusement la requête qu'ils vont générer, que la forme soit bonne ou pas. Le 30 % venait de la lecture du SQL réel, pas du C# qui l'avait produit. La même leçon s'applique au code généré par un LLM aujourd'hui : lisez la sortie, pas juste l'invite.