septembre
2010
Un Complex Type est une propriété non scalaire d’une entité qui peut contenir elle-même des propriétés scalaires ou d’autres Complex Types.
Par exemple, l’entité suivante :
On peut considérer que les champs Firstname et Lastname sont très liés et pourraient être regroupés dans un champ Name. C’est ce que l’on appelle un Complex Type.
Autrefois, la création de Complex Types n’était pas supportée par l’Entity Model Designer, nous obligeant donc à passer par le mode XML dans lequel il est parfois difficile de s’y retrouver. Le problème est maintenant réglé avec la version 4.0.
Voyons tout de suite comment procéder en reprenant notre exemple :
Avant tout, il faut sélectionner les différents champs de l’entité qui formeront le Complex Type. Dans notre cas, il s’agit de Firstname et Lastname. Ensuite, dans le menu contextuel, nous pouvons trouver la nouvelle action permettant de regrouper nos champs :
Il ne reste plus qu’à renommer le Complex Type et le tour est joué. Le nouveau champ apparaît dans le Model Browser et les deux propriétés scalaires sont bien remplacées par le Complex Type dans l’entité :
Le mapping est également impacté comme on peut le voir ici :
Le Complex Type devient en fait une classe contenant nos deux propriétés d’origine. Lorsque l’on créera une nouvelle entité Person, il sera donc nécessaire de créer une instance de cette classe si l’on veut accéder aux valeurs des champs.
Pour terminer, voyons comment utiliser cette nouvelle propriété.
person.Name = new Name();
person.Name.Firstname = "John";
person.Name.Lastname = "Doe";
A savoir qu’il est tout à fait possible de donner des noms différents à la classe et à la propriété.