Share via


Contenitori di entità (EDM)

In Entity Data Model (EDM) un oggetto EntityContainer è un raggruppamento logico di set di entità e set di associazioni. Poiché il modello di programmazione viene compilato in base allo schema CSDL (Conceptual Schema Definition Language), EntityContainer è la specifica per uno spazio dei nomi nel modello a oggetti definito. Nello schema SSDL (Store Schema Definition Language) EntityContainer identifica il contenitore di archiviazione in cui vengono mantenuti i dati per le applicazioni compilate in base al modello. Può trattarsi di un database in un sistema di gestione di database relazionali (RDBMS) o di un'altra tecnologia.

EntityContainer controlla l'ambito di entità e relazioni. Tutti i tipi in EDM sono definiti nell'ambito di uno spazio dei nomi EntityContainer. Istanze di EntitySet e AssociationSet vengono create nell'ambito di un EntityContainer. Allo stesso modo, istanze di EntityType o Association vengono create nell'ambito di un EntitySet o AssociationSet.

Nella gerarchia XML l'elemento EntityContainer è distinto dall'elemento Schema anche se EntityContainer è definito in uno schema. Questo aspetto è importante per il mapping dell'elemento EntityContainer da archiviare. Nel file di mapping il nome completo di EntityContainer non include il nome dello spazio dei nomi dello schema.

Un elemento EntityContainer è derivato dal costrutto di base EntityContainer fornito da EDM. EntityContainer specifica i tipi derivati da EntitySet e AssociationSet.

Un elemento EntitySet definito in un EntityContainer può contenere un EntityType definito in un EntityContainer separato.

Un elemento AssociationSet non può fare riferimento a un EntitySet definito in un EntityContainer separato.

Nell'esempio seguente vengono illustrate le dichiarazioni di due tipi di entità e di un tipo di associazione, quindi la dichiarazione di un oggetto EntityContainer con due set di entità e un set di associazioni.

Nello schema seguente sono incluse le dichiarazioni delle entità:

<?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>

Nello schema seguente sono incluse le dichiarazioni delle associazioni:

<?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>

Nello schema seguente è inclusa la dichiarazione del contenitore di entità:

<?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>

Vedere anche

Concetti

Associazione (EDM)

Altre risorse

Specifica di schemi e mapping (Entity Framework)