Suddivisione delle entità della finestra di progettazione
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 in questione 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 si usa Visual Studio 2012, si creerà un database Local DB.
- Se si usa Visual Studio 2010, si creerà un database SQL Express.
Prima di tutto si creerà un database con due tabelle che verranno combinate in una singola entità.
- Aprire Visual Studio.
- Visualizzazione -> Esplora server
- Fare clic con il pulsante destro del mouse su Data Connessione ions -> Aggiungi Connessione ion...
- Se non si è connessi a un database da Esplora server prima di dover selezionare Microsoft SQL Server come origine dati
- Connessione a Local DB o SQL Express, a seconda di quale è 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.
Eseguire il mapping di 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 Telefono 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 mapping. 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 tabella o vista> nella finestra Dettagli mapping.
- 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 l'applicazione ed eseguirla.
Le istruzioni T-SQL seguenti sono state eseguite sul database in seguito all'esecuzione dell'applicazione.
Le due istruzioni IN edizione Standard RT seguenti sono state eseguite in seguito all'esecuzione del contesto. SaveChanges(). Accettano i dati dall'entità Person e li suddividono tra le tabelle Person e PersonInfo .
Il edizione Standard LECT seguente è stato eseguito come risultato dell'enumerazione delle persone nel database. Combina i dati della tabella Person e PersonInfo .