Condividi tramite


Elemento End (SSDL)

L'elemento End in SSDL (Store Schema Definition Language) specifica la tabella e il numero di righe in corrispondenza di un'entità finale del vincolo di chiave esterna nel database sottostante.L'elemento End può essere un elemento figlio dell'elemento Association o dell'elemento AssociationSet.In entrambi i casi, gli elementi figlio possibili e gli attributi applicabili sono diversi.

Elemento End come figlio dell'elemento Association

Un elemento End (come figlio dell'elemento Association) specifica la tabella e il numero di righe in corrispondenza dell'entità finale del vincolo di chiave esterna rispettivamente con gli attributi Type e Multiplicity.Le entità finali del vincolo di chiave esterna sono definite come parte dell'associazione SSDL. L'associazione SSDL deve disporre esattamente di due entità finali.

Un elemento End può includere i seguenti elementi figlio (nell'ordine elencato):

Attributi applicabili

Nella tabella seguente vengono descritti gli attributi che è possibile applicare all'elemento End quando è il figlio di un elemento Association.

Nome attributo

È obbligatorio

Valore

Type

Il nome completo del set di entità SSDL che si trova in corrispondenza dell'entità finale del vincolo di chiave esterna.

Role

No

Il valore dell'attributo Role nell'elemento Principal o Dependent dell'elemento ReferentialConstraint corrispondente (se utilizzato).

Multiplicity

1, 0..1 o * a seconda del numero di righe che possono essere presenti in corrispondenza dell'entità finale del vincolo di chiave esterna.

  • 1 indica che in corrispondenza dell'entità finale del vincolo di chiave esterna esiste esattamente una riga.

  • 0..1 indica che in corrispondenza dell'entità finale del vincolo di chiave esterna non esiste alcuna riga oppure una.

  • * indica che in corrispondenza dell'entità finale del vincolo di chiave esterna esiste una riga oppure più di una.

Nota

È possibile applicare qualsiasi numero di attributi di annotazione (attributi XML personalizzati) all'elemento End.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 riportato di seguito viene mostrato un elemento Association che definisce il vincolo di chiave esterna FK_CustomerOrders.I valori Multiplicity specificati su ogni elemento End indicano che molte righe nella tabella Orders possono essere associate a una riga nella tabella Customers, ma solo una riga nella tabella Customers può essere associata a una riga nella tabella Orders.L'elemento OnDelete indica inoltre che tutte le righe della tabella Orders che fanno riferimento a una determinata riga nella tabella Customers verranno eliminate se viene eliminata la riga della tabella Customers.

<Association Name="FK_CustomerOrders">
  <End Role="Customers" 
       Type="ExampleModel.Store.Customers" Multiplicity="1">
    <OnDelete Action="Cascade" />
  </End>
  <End Role="Orders" 
       Type="ExampleModel.Store.Orders" Multiplicity="*" />
  <ReferentialConstraint>
    <Principal Role="Customers">
      <PropertyRef Name="CustomerId" />
    </Principal>
    <Dependent Role="Orders">
      <PropertyRef Name="CustomerId" />
    </Dependent>
  </ReferentialConstraint>
</Association>
<Association Name="FK_CustomerOrders">
  <End Role="Customers" Type="ExampleModel.Store.Customers" Multiplicity="1">
    <OnDelete Action="Cascade" />
  </End>
  <End Role="Orders" Type="ExampleModel.Store.Orders" Multiplicity="*" />
  <ReferentialConstraint>
    <Principal Role="Customers">
      <PropertyRef Name="CustomerId" />
    </Principal>
    <Dependent Role="Orders">
      <PropertyRef Name="CustomerId" />
    </Dependent>
  </ReferentialConstraint>
</Association>

<Association Name="FK_CustomerOrders">
  <End Role="Customers" Type="ExampleModel.Store.Customers" Multiplicity="1">
    <OnDelete Action="Cascade" />
  </End>
  <End Role="Orders" Type="ExampleModel.Store.Orders" Multiplicity="*" />
  <ReferentialConstraint>
    <Principal Role="Customers">
      <PropertyRef Name="CustomerId" />
    </Principal>
    <Dependent Role="Orders">
      <PropertyRef Name="CustomerId" />
    </Dependent>
  </ReferentialConstraint>
</Association>

Elemento End come figlio dell'elemento AssociationSet

L'elemento End (come figlio dell'elemento AssociationSet) specifica una tabella in corrispondenza dell'entità finale del vincolo di chiave esterna nel database sottostante.

Un elemento End può includere i seguenti elementi figlio (nell'ordine elencato):

Attributi applicabili

Nella tabella seguente vengono descritti gli attributi che è possibile applicare all'elemento End quando è il figlio di un elemento AssociationSet.

Nome attributo

È obbligatorio

Valore

EntitySet

Il nome del set di entità SSDL in corrispondenza dell'entità finale del vincolo di chiave esterna.

Role

No

Il valore di uno degli Role attributi specificati su un elemento End dell'elemento Association corrispondente.

Nota

È possibile applicare qualsiasi numero di attributi di annotazione (attributi XML personalizzati) all'elemento End.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 riportato di seguito viene mostrato un elemento EntityContainer con un elemento AssociationSet con due elementi End:

<EntityContainer Name="ExampleModelStoreContainer">
  <EntitySet Name="Customers" 
             EntityType="ExampleModel.Store.Customers" 
             Schema="dbo" />
  <EntitySet Name="Orders" 
             EntityType="ExampleModel.Store.Orders" 
             Schema="dbo" />
  <AssociationSet Name="FK_CustomerOrders" 
                  Association="ExampleModel.Store.FK_CustomerOrders">
    <End Role="Customers" EntitySet="Customers" />
    <End Role="Orders" EntitySet="Orders" />
  </AssociationSet>
</EntityContainer>
<EntityContainer Name="ExampleModelStoreContainer">
  <EntitySet Name="Customers" EntityType="ExampleModel.Store.Customers" Schema="dbo" />
  <EntitySet Name="Orders" EntityType="ExampleModel.Store.Orders" Schema="dbo" />
  <AssociationSet Name="FK_CustomerOrders" Association="ExampleModel.Store.FK_CustomerOrders">
    <End Role="Customers" EntitySet="Customers" />
    <End Role="Orders" EntitySet="Orders" />
  </AssociationSet>
</EntityContainer>

<EntityContainer Name="ExampleModelStoreContainer">
  <EntitySet Name="Customers" EntityType="ExampleModel.Store.Customers" Schema="dbo" />
  <EntitySet Name="Orders" EntityType="ExampleModel.Store.Orders" Schema="dbo" />
  <AssociationSet Name="FK_CustomerOrders" Association="ExampleModel.Store.FK_CustomerOrders">
    <End Role="Customers" EntitySet="Customers" />
    <End Role="Orders" EntitySet="Orders" />
  </AssociationSet>
</EntityContainer>

Vedere anche

Concetti

Panoramica su Entity Framework

Specifiche SSDL

Altre risorse

Specifiche CSDL, SSDL e MSL

Strumenti di ADO.NET Entity Data Model