Partager via


type de complexes:

Un type complexe est un modèle permettant de définir des propriétés enrichies et structurées sur des types d’entités ou sur d’autres types complexes. Chaque modèle contient les éléments suivants :

  • Nom unique. (Obligatoire)

    Remarque

    Le nom d’un type complexe ne peut pas être identique à un nom de type d’entité dans le même espace de noms.

  • Données sous la forme d’une ou plusieurs propriétés. (Facultatif.)

    Remarque

    Une propriété d’un type complexe peut être un autre type complexe.

Un type complexe est similaire à un type d’entité dans lequel un type complexe peut transporter une charge utile de données sous la forme de propriétés de type primitif ou d’autres types complexes. Toutefois, il existe des différences clés entre les types complexes et les types d’entités :

  • Les types complexes n’ont pas d’identités et ne peuvent donc pas exister indépendamment. Les types complexes peuvent exister uniquement en tant que propriétés sur les types d’entités ou d’autres types complexes.

  • Les types complexes ne peuvent pas participer à des associations. Aucune des deux extrémités d’une association ne peut être un type complexe, et par conséquent, les propriétés de navigation ne peuvent pas être définies sur des types complexes.

Exemple :

Le ADO.NET Entity Framework utilise un langage spécifique au domaine (DSL) appelé langage de définition de schéma conceptuel (CSDL) pour définir des modèles conceptuels. Le langage CSDL suivant définit un type complexe, Address, avec les propriétés de type primitif StreetAddress, City, StateOrProvince, Country et PostalCode.

<ComplexType Name="Address" >
  <Property Type="String" Name="StreetAddress" Nullable="false" />
  <Property Type="String" Name="City" Nullable="false" />
  <Property Type="String" Name="StateOrProvince" Nullable="false" />
  <Property Type="String" Name="Country" Nullable="false" />
  <Property Type="String" Name="PostalCode" Nullable="false" />
</ComplexType>

Pour définir le type Address complexe (ci-dessus) en tant que propriété sur un type d’entité, vous devez déclarer le type de propriété dans la définition de type d’entité. Le langage CSDL suivant déclare la Address propriété en tant que type complexe sur un type d’entité (Publisher) :

<EntityType Name="Publisher">
      <Key>
        <PropertyRef Name="Id" />
      </Key>
      <Property Type="Int32" Name="Id" Nullable="false" />
      <Property Type="String" Name="Name" Nullable="false" />
      <Property Type="BooksModel.Address" Name="Address" Nullable="false" />
      <NavigationProperty Name="Books" Relationship="BooksModel.PublishedBy"
                          FromRole="Publisher" ToRole="Book" />
    </EntityType>

Voir aussi