Closed JabX closed 1 year ago
reference: true
vs values
defaultProperty
/orderProperty
/flagProperty
ne sont auto-renseignées que si on a l'un ou l'autre.references.ts
au lieu d'un fichier de classe dédié. Si elle a des values
, alors son type de PK est une "enum", sinon c'est simplement le type de la PK. Si la classe a reference: true
et une PK autogénérée, le générateur ajoute une définition de reference (type
+ valueKey
+ labelKey
).reference
== classe de référence pour Kinetix (utilisation avec ReferenceManager), values
== génération de constantes (ou enum, selon la config) + HasData
avec EF CoreLes deux concepts sont utilisés souvent de manière interchangeables alors qu'en réalité values
ne devrait pas avoir grand chose à voir avec reference: true
:
values
ne devrait servir qu'à initialiser des données, et si la classe contient une PK simple non autogénérée, alors on considère la liste comme exhaustive et on peut générer des enums sur la PK.reference: true
ne devrait que s'occuper d'infos supplémentaires sur le code généré pour utiliser les classes comme liste de référence. C'est lui qui impose la PK simple en particulier.
Pourquoi faut il une clé unique si la PK est autogénérée ?
=> C'est utilisé pour générer les constantes correspondant à chaque
value
, en vrai ça ne sert pas à grand chose (et n'a pas beaucoup de sens puisque la liste de constantes ne sera pas exhaustive). On pourrait probablement juste arrêter de le faire.Pourquoi je ne peux pas en mettre si j'ai une PK composite (#204) ?
=> Même raison, on a besoin d'un code pour identifier chaque
value
. Si on lève la restriction (= si je ne peux pas identifier la value, tant pis je ne l'identifie pas), c'est possible.Pourquoi je dois quand même renseigner ma PK autogénérée si j'utilise EF Core pour initialiser mes values ?
=> EF Core a besoin d'avoir la PK quoi qu'il arrive, sinon il ne pourra pas générer de scripts d'update ou delete sans accéder à la BDD. A priori il n'y a pas de solution (topmodel pourrait générer lui-même les IDs mais à moins d'avoir un entier et de faire 1,2,3,4... en dur... autant le mettre explicitement)
Pourquoi on ne génèrerait pas aussi une enum pour les propriétés avec clé unique si la PK n'est pas autogénérée ? (cc @vit-Cos)
=> Parce que les enums ne sont que sur les clés primaires et que le besoin semble très limité (= si c'était une FK vers une autre table on l'aurait par exemple). A voir ce que ça coûte de changer la règle de l'enum de 'PK simple non autogénérée + values' vers 'propriété unique de classe avec PK simple non autogénérée + values` (sachant que la PK est unique, cette définition marche aussi pour la PK)