Udostępnij za pośrednictwem


typ złożony

Typ złożony to szablon do definiowania rozbudowanych, ustrukturyzowanych właściwości typów jednostek lub innych typów złożonych. Każdy szablon zawiera następujące elementy:

  • Unikatowa nazwa. (Wymagane)

    Uwaga

    Nazwa typu złożonego nie może być taka sama jak nazwa typu jednostki w tej samej przestrzeni nazw.

  • Dane w postaci co najmniej jednej właściwości. (opcjonalnie)

    Uwaga

    Właściwość typu złożonego może być innym typem złożonym.

Typ złożony jest podobny do typu jednostki, w przypadku którego typ złożony może przenosić ładunek danych w postaci właściwości typu pierwotnego lub innych typów złożonych. Istnieją jednak pewne kluczowe różnice między typami złożonymi i typami jednostek:

  • Typy złożone nie mają tożsamości i dlatego nie mogą istnieć niezależnie. Typy złożone mogą istnieć tylko jako właściwości typów jednostek lub innych typów złożonych.

  • Typy złożone nie mogą uczestniczyć w skojarzeniach. Żaden koniec skojarzenia nie może być typem złożonym i dlatego nie można zdefiniować właściwości nawigacji w typach złożonych.

Przykład

ADO.NET Entity Framework używa języka specyficznego dla domeny (DSL) nazywanego koncepcyjnym językiem definicji schematu (CSDL) do definiowania modeli koncepcyjnych. Poniższy plik CSDL definiuje typ złożony, Adres z właściwościami StreetAddresstypu pierwotnego , , CityStateOrProvince, Countryi 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>

Aby zdefiniować typ Address złożony (powyżej) jako właściwość typu jednostki, należy zadeklarować typ właściwości w definicji typu jednostki. Poniższy plik CSDL deklaruje Address właściwość jako typ złożony dla typu jednostki (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>

Zobacz też