Elemento Schema (CSDL)

L'elemento Schema è l'elemento radice di una definizione di modello concettuale. Contiene definizioni per gli oggetti, le funzioni e i contenitori che costituiscono un modello concettuale.

L'elemento Schema può contenere zero o più dei seguenti elementi figlio:

È possibile che un elemento Schema contenga zero elementi Annotazione o uno solo.

Bb399276.note(it-it,VS.100).gifNota:
L'utilizzo dell'elemento Function e degli elementi di annotazione è consentito solo nei modelli concettuali per applicazioni destinate a .NET Framework versione 4 o successive.Lo spazio dei nomi XML per tali modelli è https://schemas.microsoft.com/ado/2008/09/edm.

L'elemento Schema utilizza l'attributo Namespace per definire lo spazio dei nomi per il tipo di entità, il tipo complesso e gli oggetti di associazione in un modello concettuale. All'interno di uno spazio dei nomi due oggetti non possono avere lo stesso nome. Gli spazi dei nomi possono estendersi a più elementi Schema e più file .csdl.

uno spazio dei nomi del modello concettuale è diverso dallo spazio dei nomi XML dell'elemento Schema. uno spazio dei nomi del modello concettuale (come definito dall'attributo Namespace ) è un contenitore logico per tipi di entità, tipi complessi e tipi di associazione. Lo spazio dei nomi XML (indicato dall'attributo xmlns ) di un elemento Schema è lo spazio dei nomi predefinito per gli elementi figlio e gli attributi dell'elemento Schema. Gli spazi dei nomi XML del form https://schemas.microsoft.com/ado/YYYY/MM/edm (dove YYYY e MM rappresentano rispettivamente l'anno e il mese) sono riservati al linguaggio CSDL. Gli elementi e gli attributi personalizzati non possono essere in spazi dei nomi che hanno questo form.

Attributi applicabili

Nella tabella riportata di seguito vengono descritti gli attributi che è possibile applicare all'elemento Schema.

Nome attributo È obbligatorio Valore

Namespace

Spazio dei nomi del modello concettuale. Il valore dell'attributo Namespace viene utilizzato per formare il nome completo di un tipo. Ad esempio, se un elemento EntityType denominato Customer si trova nello spazio dei nomi Simple.Example.Model, il nome completo di EntityType sarà SimpleExampleModel.Customer.

Non è possibile utilizzare le stringhe seguenti come valori per l'attributo Namespace: System, Transient o Edm. Il valore per l'attributo Namespace non può essere uguale al valore per l'attributo Namespace nell'elemento SSDL Schema.

Alias

No

Identificatore utilizzato al posto del nome dello spazio dei nomi. Ad esempio, se un elemento EntityType denominato Customer si trova nello spazio dei nomi Simple.Example.Model e il valore dell'attributo Alias è Model, sarà possibile utilizzare Model.Customer come il nome completo di EntityType..

Bb399276.note(it-it,VS.100).gifNota:
È possibile applicare un qualsiasi numero di attributi di annotazione (attributi XML personalizzati) all'elemento Schema.Tuttavia, gli attributi personalizzati non possono appartenere ad alcuno spazio dei nomi XML riservato a CSDL.I nomi completi per due attributi personalizzati qualsiasi non possono essere uguali.

Esempio

Nell'esempio seguente viene mostrato un elemento Schema che contiene un elemento EntityContainer, due elementi EntityType e un elemento Association.

<Schema xmlns="https://schemas.microsoft.com/ado/2008/09/edm" 
     xmlns:cg="https://schemas.microsoft.com/ado/2006/04/codegeneration"
     xmlns:store="https://schemas.microsoft.com/ado/2007/12/edm/EntityStoreSchemaGenerator" 
      Namespace="ExampleModel" Alias="Self">
        <EntityContainer Name="ExampleModelContainer">
          <EntitySet Name="Customers" 
                     EntityType="ExampleModel.Customer" />
          <EntitySet Name="Orders" EntityType="ExampleModel.Order" />
          <AssociationSet 
                      Name="CustomerOrder" 
                      Association="ExampleModel.CustomerOrders">
            <End Role="Customer" EntitySet="Customers" />
            <End Role="Order" EntitySet="Orders" />
          </AssociationSet>
        </EntityContainer>
        <EntityType Name="Customer">
          <Key>
            <PropertyRef Name="CustomerId" />
          </Key>
          <Property Type="Int32" Name="CustomerId" Nullable="false" />
          <Property Type="String" Name="Name" Nullable="false" />
          <NavigationProperty 
                   Name="Orders" 
                   Relationship="ExampleModel.CustomerOrders" 
                   FromRole="Customer" ToRole="Order" />
        </EntityType>
        <EntityType Name="Order">
          <Key>
            <PropertyRef Name="OrderId" />
          </Key>
          <Property Type="Int32" Name="OrderId" Nullable="false" />
          <Property Type="Int32" Name="ProductId" Nullable="false" />
          <Property Type="Int32" Name="Quantity" Nullable="false" />
          <NavigationProperty 
                   Name="Customer" 
                   Relationship="ExampleModel.CustomerOrders" 
                   FromRole="Order" ToRole="Customer" />
          <Property Type="Int32" Name="CustomerId" Nullable="false" />
        </EntityType>
        <Association Name="CustomerOrders">
          <End Type="ExampleModel.Customer" 
               Role="Customer" Multiplicity="1" />
          <End Type="ExampleModel.Order" 
               Role="Order" Multiplicity="*" />
          <ReferentialConstraint>
            <Principal Role="Customer">
              <PropertyRef Name="CustomerId" />
            </Principal>
            <Dependent Role="Order">
              <PropertyRef Name="CustomerId" />
            </Dependent>
          </ReferentialConstraint>
        </Association>
      </Schema>

Vedere anche

Concetti

Panoramica su Entity Framework
Specifiche CSDL

Altre risorse

Specifiche CSDL, SSDL e MSL
ADO.NET Entity Data Model Tools