Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
The Extends attribute of the EntityContainer element in the Entity Data Model (EDM) provides a means to add entities and associations to an existing schema.
Consider a scenario where a developer defines model A. Another developer wants to extend model A to create a new model B. This new model B introduces some new types and associations between the new types and the existing types, but the changes to the original model A are only additive associations or specialized implementations of the original types.
The following schema defines a model A that includes Car and Person entities, an association between the two entities to relate car owners, and entity sets corresponding to each definition of Car, Person, and Owner.
<?xml version="1.0" encoding="utf-8"?>
<Schema Namespace="MyCompany.MySchema" Alias="ModelA" xmlns="https://schemas.microsoft.com/ado/2006/04/edm">
<EntityContainer Name="ContainerA">
<EntitySet Name="Cars" EntityType="ModelA.Car" />
<EntitySet Name="People" EntityType="ModelA.Person" />
<AssociationSet Name="CarOwners" AssociationType="ModelA.CarOwner">
<End Role="Cars" EntitySet="ModelA.Cars" />
<End Role="Owner" EntitySet=" ModelA.People" />
</AssociationSet>
</EntityContainer>
<EntityType Name="Car">
<Key>
<PropertyRef Name="Make" />
<PropertyRef Name="Model" />
</Key>
<Property Name="Make" Type="String" />
<Property Name="Model" Type="String" />
</EntityType>
<EntityType Name="Person">
<Key>
<PropertyRef Name="FirstName" />
<PropertyRef Name="LastName" />
</Key>
<Property Name="FirstName" Type="String" />
<Property Name="LastName" Type="String" />
</EntityType>
<Association Name="CarOwner">
<End Role="Cars" Type=" ModelA.Car" Multiplicity="*" />
<End Role="Owner" Type=" ModelA.Owner" Multiplicity="1" />
</Association>
</Schema>
A second developer extends the model by adding RichPerson type, Dealer type, and LuxuryCar type with corresponding entity sets. A relationship between Dealer and Car is also added to represent dealerships.
<?xml version="1.0" encoding="utf-8"?>
<Schema Namespace="MyCompany.MySchema2" Alias="ModelB" xmlns="https://schemas.microsoft.com/ado/2006/04/edm">
<Using Namespace="MyCompany.MySchema" Alias="ModelA" />
<EntityContainer Name="ContainerB" Extends="ContainerA" >
<EntitySet Name="LuxuryCars" EntityType="ModelB.LuxuryCar" />
<EntitySet Name="RichPeople" EntityType="ModelB.RichPerson" />
<EntitySet Name="CarDealers" EntityType="ModelB.CarDealer" />
<AssociationSet Name="DealerCars" AssociationType="ModelB.DealerCars">
<End Role="CarDealers" EntitySet="CarDealers" />
<End Role="Cars" EntitySet="Cars" />
</AssociationSet>
</EntityContainer>
<EntityType Name="Dealer">
…
</EntityType>
<EntityType Name="LuxuryCar" BaseType="ModelA.Car" >
<Property Name="Price" Type="Decimal" />
</EntityType>
<EntityType Name="RichPerson" BaseType="Person">
<Property Name="NetWorth" Type="Decimal" />
</EntityType>
<Association Name="DealerCars">
<End Role="CarDealers" Type="ModelB.CarDealers" Multiplicity="1" />
<End Role="Cars" Type="ModelA.Car" Multiplicity="*" />
</Association>
</Schema>