Question

À l’aide de SubSonic 3 ActiveRecord, j’ai généré du code à partir d’une base de données existante contenant des clés étrangères. Pour que le schéma de base de données soit toujours correct lors du changement de base de données, j'ai placé le code de migration au début de l'application, en utilisant IDataProvider.MigrateToDatabase<MyClass>() pour chaque classe générée par ActiveRecord.tt. En fin de compte, le code de migration ne régénère pas les clés étrangères.

Comment dois-je gérer les FK:

  • Oubliez complètement les FK et gérez les suppressions en cascade dans le code. Avantages: à la manière de Rails, la logique métier est conservée dans le code. Inconvénients: nécessité de gérer les transactions, le code devient beaucoup plus laid; L'aller-retour du schéma entre la base de données et ActiveRecord devient impossible si la base de données est commutée / effacée (il est nécessaire de toujours conserver le schéma d'origine pour régénérer / modifier le code AR, sinon les propriétés un à plusieurs générées seront perdues?); aussi, mes collègues peuvent penser que je suis en colère.
  • Ajoutez une étape aux migrations pour créer les FK manuellement. Avantages: le schéma sera toujours à jour; Le code AR sera toujours possible de se régénérer. Inconvénients: dépendance à la base de données (problème mineur?)
  • Trouvez en quelque sorte un moyen de définir les relations FK dans le code afin que le schéma puisse être migré correctement.

Est-ce que je me trompe? J'apprécierais n'importe quel conseil.

Était-ce utile?

La solution

Je travaille actuellement sur des cours de FK pour les cours et, croyez-le ou non, c'est assez difficile. Si votre classe parent contient la liste d'une classe enfant, est-ce qu'il y en a plusieurs? Peut-être - si votre classe enfant contient une référence en arrière. C'est une hypothèse faible (bidirectionnel n'est pas une bonne conception).

Quoi qu'il en soit.

AR s’adresse davantage aux utilisateurs de la base de données. Créez donc votre base de données à votre guise, puis exécutez ses modèles. Vos FK seront honorés et ainsi de suite.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top