Étudions maintenant comment la définition des entités peut être étendue avec de nouveaux éléments utilisant ce qu'on appelle des aspects.
Regardez la vidéo pour en savoir plus sur les aspects CDS.
Dans cette leçon, nous allons en apprendre davantage sur la directive extend . Nous discuterons de la directive annotate plus tard dans une autre leçon.
La directiveextend
À l'aide de la directive extend vous pouvez ajouter des zones d'extension aux définitions existantes comme illustré dans la figure suivante :

Dans l'exemple, l'élément SomeAdditionalField est ajouté à l'entité de domaine Authors. Cette zone est également ajoutée à la table de base de données générée.
Remarque
Avec la directive extend , les métadonnées telles que les annotations peuvent également être ajoutées aux définitions existantes ou les métadonnées existantes peuvent être écrasées.
Les propriétés de type peuvent également être définies via extend. Par exemple, la longueur d'un élément existant de type Chaîne peut être augmentée.
Aspects nommés
Vous pouvez utiliser extend avec des aspects prédéfinis pour appliquer les mêmes extensions à plusieurs cibles, comme illustré dans la figure suivante :

L'exemple montre un aspect nommé ManagedObject qui définit les deux éléments createdAt et createdBy. L'entité Livres et Auteurs est étendue par ces zones via cet aspect nommé.
Remarque
Une extension nommée peut contenir n'importe quel élément, tel que des champs, des types ou des entités.
Inclut comme syntaxe de raccourci
Vous pouvez également utiliser des aspects nommés comme includes dans une syntaxe de type héritage. Cette syntaxe vous permet d'étendre une définition avec plusieurs aspects nommés en même temps. Dans la figure suivante, l'entité Auteurs est étendue par les deux aspects nommés ManagedObject et AnotherAspect.

Sont inclus le sucre syntaxique. L'exemple présenté équivaut à utiliser une séquence de extends comme suit :
1234567entity Authors {}
extend Authors with ManagedObject;
extend Authors with AnotherAspect;
extend Authors with {
key ID : UUID;
...
}


