Export (0) Print
Expand All

complex type

A complex type is a template for defining rich, structured properties on entity types or on other complex types. Each template contains the following:

  • A unique name. (Required)

    noteNote:
    The name of a complex type cannot be the same as an entity type name within the same namespace.

  • Data in the form of one or more properties. (Optional.)

    noteNote:
    A property of a complex type can be another complex type.

A complex type is similar to an entity type in that a complex type can carry a data payload in the form of primitive type properties or other complex types. However, there are some key differences between complex types and entity types:

  • Complex types do not have identities and therefore cannot exist independently. Complex types can only exist as properties on entity types or other complex types.

  • Complex types cannot participate in associations. Neither end of an association can be a complex type, and therefore navigation properties cannot be defined on complex types.

Example

The ADO.NET Entity Framework uses a domain-specific language (DSL) called conceptual schema definition language (CSDL) to define conceptual models. The following CSDL defines a complex type, Address, with the primitive type properties StreetAddress, City, StateOrProvince, Country, and 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>
    

To define the complex type Address (above) as a property on an entity type, you must declare the property type in the entity type definition. The following CSDL declares the Address property as a complex type on an entity type (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>
    

See Also




Build Date:

2012-08-02
Show:
© 2014 Microsoft