Sdílet prostřednictvím


complex type

Komplexní typ je šablona pro definování bohatých, strukturovaných vlastností u typů entit nebo jiných komplexních typů. Každá šablona obsahuje následující:

  • Jedinečný název. (Povinné)

    Poznámka:

    Název komplexního typu nemůže být stejný jako název typu entity v rámci stejného oboru názvů.

  • Data ve formě jedné nebo více vlastností. (Volitelné.)

    Poznámka:

    Vlastnost komplexního typu může být jiný komplexní typ.

Komplexní typ je podobný typu entity v tom, že komplexní typ může přenášet datovou část ve formě primitivních vlastností typu nebo jiných komplexních typů. Mezi komplexními typy a typy entit však existují některé klíčové rozdíly:

  • Komplexní typy nemají identity, a proto nemohou existovat nezávisle. Komplexní typy mohou existovat pouze jako vlastnosti u typů entit nebo jiných komplexních typů.

  • Komplexní typy se nemohou účastnit přidružení. Ani jeden konec přidružení nemůže být složitý typ, a proto nelze definovat navigační vlastnosti u komplexních typů.

Příklad

ADO.NET Entity Framework používá jazyk specifický pro doménu (DSL) označovaný jako jazyk CSDL (Conceptual Schema Definition Language) k definování konceptuálních modelů. Následující CSDL definuje komplexní typ, Address, s primitivními vlastnostmi StreetAddresstypu , City, StateOrProvince, Country, a 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>

Chcete-li definovat komplexní typ Address (výše) jako vlastnost typu entity, musíte deklarovat typ vlastnosti v definici typu entity. Následující csDL deklaruje Address vlastnost jako komplexní typ u typu entity (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>

Viz také