Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questa procedura dettagliata illustra come eseguire il mapping di un tipo di entità a due tabelle modificando un modello con Entity Framework Designer (EF Designer). È possibile eseguire il mapping di un'entità a più tabelle quando le tabelle condividono una chiave comune. I concetti applicabili al mapping di un tipo di entità a due tabelle vengono facilmente estesi per eseguire il mapping di un tipo di entità a più di due tabelle.
L'immagine seguente mostra le finestre principali usate quando si lavora con Entity Framework Designer.
Prerequisiti
Visual Studio 2012 o Visual Studio 2010, Ultimate, Premium, Professional o Web Express Edition.
Creare il database
Il server di database installato con Visual Studio è diverso a seconda della versione di Visual Studio installata:
- Se usi Visual Studio 2012, creerai un database LocalDB.
- Se stai usando Visual Studio 2010, stai creando un database SQL Express.
Prima di tutto si creerà un database con due tabelle che verranno combinate in una singola entità.
- Apri Visual Studio.
- Visualizza -> Esplora server
- Fare clic con il pulsante destro del mouse su Connessioni dati -> Aggiungi connessione...
- Se non ti sei mai connesso a un database tramite Esplora server, dovrai selezionare Microsoft SQL Server come origine dati.
- Connettersi a LocalDB o SQL Express, a seconda di quale database è stato installato
- Immettere EntitySplitting come nome del database
- Selezionare OK e verrà chiesto se si vuole creare un nuovo database, selezionare Sì
- Il nuovo database verrà ora visualizzato in Esplora server
- Se si usa Visual Studio 2012
- Fare clic con il pulsante destro del mouse sul database in Esplora server e scegliere Nuova query
- Copiare il codice SQL seguente nella nuova query, quindi fare clic con il pulsante destro del mouse sulla query e selezionare Esegui
- Se si usa Visual Studio 2010
- Selezionare Dati -> Editor Transact-SQL -> Nuova connessione query...
- Immettere .\SQLEXPRESS come nome del server e fare clic su OK
- Selezionare il database EntitySplitting dall'elenco a discesa nella parte superiore dell'editor di query
- Copiare il codice SQL seguente nella nuova query, quindi fare clic con il pulsante destro del mouse sulla query e selezionare Esegui SQL
CREATE TABLE [dbo].[Person] (
[PersonId] INT IDENTITY (1, 1) NOT NULL,
[FirstName] NVARCHAR (200) NULL,
[LastName] NVARCHAR (200) NULL,
CONSTRAINT [PK_Person] PRIMARY KEY CLUSTERED ([PersonId] ASC)
);
CREATE TABLE [dbo].[PersonInfo] (
[PersonId] INT NOT NULL,
[Email] NVARCHAR (200) NULL,
[Phone] NVARCHAR (50) NULL,
CONSTRAINT [PK_PersonInfo] PRIMARY KEY CLUSTERED ([PersonId] ASC),
CONSTRAINT [FK_Person_PersonInfo] FOREIGN KEY ([PersonId]) REFERENCES [dbo].[Person] ([PersonId]) ON DELETE CASCADE
);
Creare il progetto
- Scegliere Nuovo dal menu Filee quindi fare clic su Progetto.
- Nel riquadro sinistro fare clic su Visual C# e quindi selezionare il modello Applicazione console .
- Immettere MapEntityToTablesSample come nome del progetto e fare clic su OK.
- Fare clic su No se viene richiesto di salvare la query SQL creata nella prima sezione.
Creare un modello basato sul database
- Fare clic con il pulsante destro del mouse sul nome del progetto in Esplora soluzioni, scegliere Aggiungi e quindi fare clic su Nuovo elemento.
- Selezionare Dati dal menu a sinistra e quindi selezionare ADO.NET Entity Data Model nel riquadro Modelli.
- Immettere MapEntityToTablesModel.edmx per il nome del file e quindi fare clic su Aggiungi.
- Nella finestra di dialogo Scegli contenuto modello selezionare Genera dal database e quindi fare clic su Avanti.
- Selezionare la connessione EntitySplitting dall'elenco a discesa e fare clic su Avanti.
- Nella finestra di dialogo Scegli oggetti di database selezionare la casella accanto al nodo Tabelle . Verranno aggiunte tutte le tabelle dal database EntitySplitting al modello.
- Fare clic su Fine.
Viene visualizzato Entity Designer, che fornisce un'area di progettazione per la modifica del modello.
Associare un'entità a due tabelle
In questo passaggio si aggiornerà il tipo di entità Person per combinare i dati dalle tabelle Person e PersonInfo .
Selezionare le proprietà Email e Phone dell'entità **PersonInfo **e premere CTRL+X tasti.
Selezionare l'entità **Persona **e premere CTRL+V .
Nell'area di progettazione selezionare l'entità PersonInfo e premere il pulsante Elimina sulla tastiera.
Fare clic su No quando viene chiesto se si desidera rimuovere la tabella PersonInfo dal modello, verrà eseguito il mapping all'entità Person .
I passaggi successivi richiedono la finestra Dettagli mappatura. Se non è possibile visualizzare questa finestra, fare clic con il pulsante destro del mouse sull'area di progettazione e selezionare Dettagli mapping.
- Selezionare il tipo di entità Person e fare clic su <Aggiungi una tabella o vista> nella finestra Dettagli mappatura.
- Selezionare **PersonInfo ** nell'elenco a discesa. La finestra Dettagli mapping viene aggiornata con i mapping delle colonne predefiniti, che sono adatti allo scenario.
Il tipo di entità Person è ora mappato alle tabelle Person e PersonInfo .
Usare il modello
- Incollare il codice seguente nel metodo Main.
using (var context = new EntitySplittingEntities())
{
var person = new Person
{
FirstName = "John",
LastName = "Doe",
Email = "john@example.com",
Phone = "555-555-5555"
};
context.People.Add(person);
context.SaveChanges();
foreach (var item in context.People)
{
Console.WriteLine(item.FirstName);
}
}
- Compilare ed eseguire l'applicazione.
Le istruzioni T-SQL seguenti sono state eseguite sul database in seguito all'esecuzione dell'applicazione.
Le due istruzioni INSERT seguenti sono state eseguite in seguito all'esecuzione del contesto. SaveChanges(). Prendono i dati dall’entità chiamata Person e li suddividono tra le tabelle Person e PersonInfo.
L'istruzione SELECT seguente è stata eseguita come risultato dell'enumerazione delle persone nel database. Combina i dati della tabella Person e PersonInfo .