Condividi tramite


Elemento ComplexProperty (MSL)

Un elemento ComplexProperty in MSL (Mapping Specification Language) definisce il mapping tra una proprietà del tipo complesso su un tipo di entità del modello concettuale e le colonne della tabella nel database sottostante. I mapping delle colonne delle proprietà sono specificati in elementi ScalarProperty figlio.

L'elemento proprietà ComplexType può includere gli elementi figlio seguenti:

Attributi applicabili

Nella tabella riportata di seguito vengono descritti gli attributi applicabili all'elemento ComplexProperty:

Nome attributo È obbligatorio Valore

Name

Nome della proprietà complessa di un tipo di entità nel modello concettuale di cui è in corso il mapping.

TypeName

No

Nome qualificato di spazio dei nomi del tipo di proprietà del modello concettuale.

Esempio

Di seguito viene riportato un esempio basato sul modello School. Il tipo complesso seguente è stato aggiunto al modello concettuale:

<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>

Le proprietà LastName e FirstName del tipo di entità Person sono state sostituite con una proprietà complessa, 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>

Nel seguente MSL viene mostrato l'elemento ComplexProperty utilizzato per eseguire il mapping della proprietà Name alle colonne nel database sottostante:

<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>

Vedere anche

Altre risorse

Specifiche CSDL, SSDL e MSL
Modellazione e mapping (Entity Framework)