J'ai un assez grand fichier DBML et a récemment découvert que MSLinqToSQLGenerator de Visual Studio génère une impression différente de celle:MSLinqToSQLGenerator génère un résultat différent de SQLMetal
SqlMetal.exe All.dbml /code:All.designer.vb /namespace:LINQ2FSE /pluralize /provider:SQL2005
Il semble avoir laissé tomber un arbitraire (et je pense relativement faible) ensemble d'associations du code VB généré. Mais SQLMetal fonctionne bien. La sortie ne devrait-elle pas être la même? Après d'autres recherches, je trouve que la différence semble être des associations sur des entités qui impliquent des propriétés qui sont également utilisées sur d'autres associations sur la même entité avec un nombre différent de colonnes. Par exemple: entité A a des colonnes id et le nom entité B a id colonnes, nom et FKA (clé étrangère à A) entité C a id colonnes, nom, FKA et FKB (annulable FKB)
entité C a association C_A, qui relie FKA à a.id il a aussi association C_B, qui relie FKA et FKB à B.fkA et B.id
Le code pour les propriétés de support C_B ne sera pas générée par Visual studio, mais être généré par SqlMetal.exe.
Ce type d'association est-il autorisé? Y a-t-il une raison pour que le code soit généré différemment?