Partager via


Élément ComplexProperty (MSL)

Un élément ComplexProperty en MSL (Mapping Specification Language) définit le mappage entre une propriété de type complexe sur un type d'entité de modèle conceptuel et des colonnes de table dans la base de données sous-jacente. Les mappages de colonnes de propriété sont spécifiés dans des éléments ScalarProperty enfants.

L'élément de propriété ComplexType peut avoir les éléments enfants suivants :

  • ScalarProperty (zéro, un ou plusieurs éléments) ;

  • ComplexProperty (zéro, un ou plusieurs éléments) ;

  • ComplextTypeMapping (zéro, un ou plusieurs éléments) ;

  • Condition (zéro, un ou plusieurs éléments).

Attributs applicables

Le tableau ci-dessous décrit les attributs applicables à l'élément ComplexProperty :

Nom d'attribut Requis Valeur

Name

Oui

Nom de la propriété complexe d'un type d'entité dans le modèle conceptuel mappé.

TypeName

Non

Nom qualifié par un espace de noms du type de propriété de modèle conceptuel.

Exemple

L'exemple suivant est basé sur le modèle School. Le type complexe suivant a été ajouté au modèle conceptuel :

<ComplexType Name="FullName">
  <Property Type="String" Name="LastName" 
            Nullable="false" MaxLength="50" 
            FixedLength="false" Unicode="true" />
  <Property Type="String" Name="FirstName" 
            Nullable="false" MaxLength="50" 
            FixedLength="false" Unicode="true" />
</ComplexType>

Les propriétés LastName et FirstName du type d'entité Person ont été remplacées par une propriété complexe, Name :

<EntityType Name="Person">
  <Key>
    <PropertyRef Name="PersonID" />
  </Key>
  <Property Name="PersonID" Type="Int32" Nullable="false" 
            annotation:StoreGeneratedPattern="Identity" />
  <Property Name="HireDate" Type="DateTime" />
  <Property Name="EnrollmentDate" Type="DateTime" />
  <Property Name="Name" Type="SchoolModel.FullName" Nullable="false" />
</EntityType>

Le MSL suivant indique que l'élément ComplexProperty utilisé pour mapper la propriété Name aux colonnes dans la base de données sous-jacente :

<EntitySetMapping Name="People">
  <EntityTypeMapping TypeName="SchoolModel.Person">
    <MappingFragment StoreEntitySet="Person">
      <ScalarProperty Name="PersonID" ColumnName="PersonID" />
      <ScalarProperty Name="HireDate" ColumnName="HireDate" />
      <ScalarProperty Name="EnrollmentDate" ColumnName="EnrollmentDate" />
      <ComplexProperty Name="Name" TypeName="SchoolModel.FullName">
        <ScalarProperty Name="FirstName" ColumnName="FirstName" />
        <ScalarProperty Name="LastName" ColumnName="LastName" />  
      </ComplexProperty>
    </MappingFragment>
  </EntityTypeMapping>
</EntitySetMapping>

Voir aussi

Autres ressources

Spécifications CSDL, SSDL et MSL
Modélisation et mappage (Entity Framework)