Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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 / Notatka
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 / Notatka
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 powiązaniach. Ż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 typu pierwotnego StreetAddress
, City
, StateOrProvince
, Country
i 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>