association type
An association type (also called an association) is the fundamental building block for describing relationships in the Entity Data Model (EDM). In a conceptual model, an association represents a relationship between two entity types (such as Customer
and Order
). In an application, an instance of an association represents a specific association (such as an association between an instance of Customer
and an instance of Order
). Association instances are logically grouped in an association set.
An association definition contains the following information:
A unique name. (Required)
Two association ends, one for each entity type in the relationship. (Required)
Note
An association cannot represent a relationship among more than two entity types. An association can, however, define a self-relationship by specifying the same entity type for each of its association ends.
A referential integrity constraint. (Optional)
Each association end must specify an association end multiplicity that indicates the number of entity type instances that can be at one end of the association. An association end multiplicity can have a value of one (1), zero or one (0..1), or many (*). Entity type instances at one end of an association can be accessed through navigation properties or foreign keys if they are exposed on an entity type. For more information, see Entity Data Model: Foreign Keys.
Example
The diagram below shows a conceptual model with two associations: PublishedBy
and WrittenBy
. The association ends for the PublishedBy
association are the Book
and Publisher
entity types. The multiplicity of the Publisher
end is one (1) and the multiplicity of the Book
end is many (*), indicating that a publisher publishes many books and a book is published by one publisher.
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 the PublishedBy
association shown in the diagram above:
<Association Name="PublishedBy">
<End Type="BooksModel.Book" Role="Book" Multiplicity="*" />
<End Type="BooksModel.Publisher" Role="Publisher" Multiplicity="1" />
</Association>