Aracılığıyla paylaş


karmaşık tür

Karmaşık tür, varlık türlerinde veya diğer karmaşık türlerde zengin, yapılandırılmış özellikler tanımlamaya yönelik bir şablondur. Her şablon aşağıdakileri içerir:

  • Benzersiz bir ad. (Gerekli)

    Uyarı

    Karmaşık bir türün adı, aynı ad alanındaki varlık türü adıyla aynı olamaz.

  • Bir veya daha fazla özellik biçimindeki veriler. (İsteğe bağlı.)

    Uyarı

    Bir karmaşık türün özelliği, başka bir karmaşık tür olabilir.

Karmaşık tür, karmaşık bir türün ilkel tür özellikleri veya diğer karmaşık türler biçiminde veri yükü taşıyabildiği varlık türüne benzer. Ancak karmaşık türler ile varlık türleri arasında bazı önemli farklar vardır:

  • Karmaşık türlerin kimlikleri yoktur ve bu nedenle bağımsız olarak mevcut olamaz. Karmaşık türler yalnızca varlık türlerinde veya diğer karmaşık türlerde özellik olarak bulunabilir.

  • Karmaşık türler ilişkilendirmelere katılamaz. İlişkilendirmenin hiçbir ucu karmaşık bir tür olamaz ve bu nedenle gezinti özellikleri karmaşık türlerde tanımlanamaz.

Örnek

ADO.NET Entity Framework, kavramsal modelleri tanımlamak için kavramsal şema tanım dili (CSDL) adlı etki alanına özgü bir dil (DSL) kullanır. Aşağıdaki CSDL, ilkel tür özellikleri StreetAddress, City, StateOrProvince, Country ve PostalCode ile karmaşık bir tür olan Address'i tanımlar.

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

Karmaşık türü Address (yukarıdaki) bir varlık türünde özellik olarak tanımlamak için, varlık türü tanımında özellik türünü bildirmeniz gerekir. Aşağıdaki CSDL, Address özelliğini varlık türünde (Publisher) karmaşık türde bir nitelik olarak bildirir.

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

Ayrıca bakınız