Share via


Procedura: creare una chiave di entità in assenza di chiavi derivate (Entity Framework)

In questo argomento viene descritto come modificare manualmente un file con estensione edmx per modificare una chiave di entità nel caso in cui la procedura guidata Entity Data Model o la procedura guidata Aggiorna modello non abbia potuto derivare una chiave di entità.

Quando si genera o aggiorna un file con estensione edmx mediante la procedura guidata Entity Data Model o la procedura guidata Aggiorna modello, la chiave di un tipo di entità viene mappata alla chiave primaria della tabella corrispondente. Se non è stata definita alcuna chiave primaria, ad esempio in una visualizzazione, gli strumenti tenteranno di derivare una chiave di entità univoca in base alle colonne della tabella o visualizzazione. La chiave derivata sarà composta da tutte le colonne non nullable e non binarie della tabella o visualizzazione. Se la tabella o visualizzazione contiene solo colonne nullable e binarie, non verrà derivata alcuna chiave.

Se non viene derivata alcuna chiave di entità, l'entità non verrà aggiunta al modello. Per contro, un commento del codice contenente l'elemento EntityType (senza chiave definita) verrà aggiunto alla sezione SSDL del file con estensione edmx.

Per ulteriori informazioni sulle chiavi di entità, vedere EntityType Element (CSDL) e EntityType Element (SSDL).

Le procedure riportate in questo argomento presuppongono che un file con estensione edmx valido sia aperto in Visual Studio.

Dd163156.note(it-it,VS.100).gifNota:
Le modifiche apportate alla sezione SSDL di un file con estensione edmx, come suggerito nelle procedure descritte di seguito, verranno sovrascritte se si utilizza la procedura guidata Aggiorna modello per aggiornare il modello.In questo caso, per evitare di dover modificare manualmente il file con estensione edmx, modificare lo schema del database in modo che ogni tabella disponga di una chiave primaria o in modo che una o più colonne di ogni tabella o visualizzazione siano non nullable o non binarie.

Aggiunta di una chiave di entità in assenza di chiavi derivate da una tabella

La procedura riportata di seguito viene applicata a un tipo di entità che corrisponde a una tabella. Questa procedura presuppone che il file con estensione edmx sia aperto nell'editor XML.

Se non si è in grado di derivare una chiave di entità in base alle colonne di una tabella con Entity Designer, l'entità non verrà aggiunta al modello. Per contro, un commento del codice contenente l'elemento EntityType (senza chiave definita) verrà aggiunto alla sezione SSDL del file con estensione edmx.

Per aggiungere una chiave di entità in assenza di chiavi derivate da una tabella

  1. Rimuovere il commento dell'elemento EntityType nella sezione SSDL del file con estensione edmx.

  2. Definire la chiave per il tipo di entità aggiungendo gli elementi Key appropriati all'elemento EntityType. Per ulteriori informazioni, vedere EntityType Element (SSDL).

    Dd163156.note(it-it,VS.100).gifNota:
    La colonna o le colonne utilizzate per definire la chiave di entità devono identificare in modo univoco una riga nella tabella.

  3. Nella sezione SSDL, aggiungere un elemento EntitySet che specifica la tabella alla quale è mappato il tipo di entità aggiunto. Per ulteriori informazioni, vedere EntitySet Element (EntityContainer SSDL).

  4. Nella sezione CSDL, aggiungere un elemento EntityType che corrisponde al tipo di entità SSDL aggiunto. Per ulteriori informazioni, vedere EntityType Element CSDL.

  5. Nella sezione di mapping concettuale ad archiviazione, aggiungere un elemento EntitySetMapping che specifica il mapping tra i tipi di entità SSDL e CSDL aggiunti. Per ulteriori informazioni, vedere EntitySetMapping Element (MSL).

Aggiunta di una chiave di entità in assenza di chiavi derivate da una visualizzazione

La procedura riportata di seguito viene applicata a un tipo di entità che corrisponde a una visualizzazione. Questa procedura presuppone che il file con estensione edmx sia aperto nell'editor XML.

Se non si è in grado di derivare una chiave di entità in base alle colonne di una visualizzazione con Entity Designer, l'entità non verrà aggiunta al modello. Per contro, un commento del codice contenente l'elemento EntityType (senza chiave definita) verrà aggiunto alla sezione SSDL del file con estensione edmx.

Per aggiungere una chiave di entità in assenza di chiavi derivate da una visualizzazione

  1. Rimuovere il commento dell'elemento EntityType nella sezione SSDL del file con estensione edmx.

  2. Definire la chiave per il tipo di entità aggiungendo gli elementi Key appropriati all'elemento EntityType. Per ulteriori informazioni, vedere EntityType Element (SSDL).

    Dd163156.note(it-it,VS.100).gifNota:
    La colonna o le colonne utilizzate per definire la chiave di entità devono identificare in modo univoco una riga nella visualizzazione.

  3. Aggiungere una query di definizione al modello. Per ulteriori informazioni, vedere Procedura: aggiungere una query di definizione (Entity Framework).

Vedere anche

Concetti

Panoramica sui file con estensione edmx (Entity Framework)