Partager via


Conteneurs d'entités (EDM)

Dans le modèle EDM (Modèle de données d'entité), un objet EntityContainer est un regroupement logique de jeux d'entités et d'ensembles d'associations. Le modèle de programmation étant construit à partir du schéma CSDL (Conceptual Schema Definition Language), un objet EntityContainer est la spécification d'un espace de noms dans le modèle objet en cours de définition. Dans le schéma SSDL (Store Schema Definition Language), l'objet EntityContainer identifie le conteneur de stockage qui rend persistantes les données des applications générées sur le modèle. Il peut s'agir d'une base de données dans un système de gestion de base de données relationnelle (SGBDR) ou d'une autre technologie.

L'objet EntityContainer contrôle l'étendue des entités et des relations. Tous les types du modèle EDM sont définis dans l'étendue d'un espace de noms EntityContainer. Les instances du EntitySet et du AssociationSet sont créées dans l'étendue d'un EntityContainer. De même, les instances d'un EntityType ou d'un Association sont créées dans l'étendue d'un EntitySet ou d'un AssociationSet.

Dans la hiérarchie XML, l'élément EntityContainer est indépendant de l'élément Schema, même si EntityContainer est défini dans un schéma. Cela est important lors du mappage du EntityContainer au stockage. Dans le fichier de mappage, le nom complet de l'élément EntityContainer n'inclut pas le nom de l'espace de noms du schéma.

Un objet EntityContainer est dérivé de la construction de base de l'objet EntityContainer fournie par le modèle EDM. L'élément EntityContainer spécifie des types dérivés du EntitySet et du AssociationSet.

Un EntitySet défini dans un EntityContainer peut contenir un EntityType défini dans un EntityContainer distinct.

Un AssociationSet ne peut pas référencer un EntitySet défini dans un EntityContainer distinct.

L'exemple suivant présente les déclarations de deux types d'entités et d'un type d'association, puis la déclaration d'un objet EntityContainer avec deux jeux d'entités et un ensemble d'associations.

Le schéma suivant contient les déclarations des entités :

<?xml version="1.0" encoding="utf-8"?>
<Schema xmlns:cg="https://schemas.microsoft.com/ado/2006/04/codegeneration"
    xmlns:edm="https://schemas.microsoft.com/ado/2006/04/edm"
    xmlns="https://schemas.microsoft.com/ado/2006/04/edm"
    Namespace="MyCompany.EntityTypes" Alias="Self">

    <EntityType Name="Order">
        <Key>
            <PropertyRef Name="OrderId" />
        </Key>
        <Property Name="OrderId" Type="String" />
        <!--Other Properties-->
    </EntityType>

    <EntityType Name="Customer">
        <Key>
            <PropertyRef Name="CustomerId" />
        </Key>
        <Property Name="CustomerId" Type="String" />
        <!--Other Properties-->
    </EntityType>

</Schema>

Le schéma suivant contient les déclarations des associations :

<?xml version="1.0" encoding="utf-8"?>
<Schema xmlns:cg="https://schemas.microsoft.com/ado/2006/04/codegeneration"
    xmlns:edm="https://schemas.microsoft.com/ado/2006/04/edm"
    xmlns="https://schemas.microsoft.com/ado/2006/04/edm"
    Namespace="MyCompany.RelationshipTypes">

    <Using Namespace="MyCompany.EntityTypes" Alias="basicTypes"/>

    <Association Name="CustomerOrder">
        <End Type="basicTypes.Customer" Multiplicity="1" />
        <End Type="basicTypes.Order" Multiplicity="*" />
    </Association>
</Schema>

Le schéma suivant contient la déclaration du conteneur d'entités :

<?xml version="1.0" encoding="utf-8"?>
<Schema xmlns:cg="https://schemas.microsoft.com/ado/2006/04/codegeneration"
    xmlns:edm="https://schemas.microsoft.com/ado/2006/04/edm"
    xmlns="https://schemas.microsoft.com/ado/2006/04/edm"
    Namespace="MyCompany.ContainerType">

    <EntityContainer name="ContainerOne">
        <Using Namespace="MyCompany.EntityTypes" Alias="basicTypes"/>
        <Using Namespace="MyCompany.RelationshipTypes" Alias="relnTypes"/>

        <EntitySet Name="CustomerSet" EntityType="basicTypes.Customer"/>
        <EntitySet Name="OrderSet" EntityType="basicTypes.Order"/>

        <AssociationSet Name="CustomerOrderSet" Association="relnTypes.CustomerOrder">
            <End EntitySet="CustomerSet" Role="Orders"/>
            <End EntitySet="OrderSet" Role="OrderedBy"/>
        </AssociationSet>
    </EntityContainer>
</Schema>

Voir aussi

Concepts

Association (EDM)

Autres ressources

Schémas et spécification de mappage (Entity Framework)