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.
A partire da .NET Framework versione 4, Entity Framework supporta il linguaggio DDL (Data Definition Language). In questo modo è possibile creare o eliminare un'istanza del database in base alla stringa di connessione e ai metadati del modello di archiviazione (SSDL).
I metodi seguenti sulla ObjectContext utilizzano la stringa di connessione e il contenuto SSDL per compiere le seguenti azioni: creare o eliminare il database, verificare se il database esiste e visualizzare lo script DDL generato.
Annotazioni
L'esecuzione dei comandi DDL presuppone autorizzazioni sufficienti.
I metodi elencati in precedenza delegano la maggior parte del lavoro al provider di dati ADO.NET sottostante. È responsabilità del provider assicurarsi che la convenzione di denominazione usata per generare oggetti di database sia coerente con le convenzioni usate per l'esecuzione di query e gli aggiornamenti.
Nell'esempio seguente viene illustrato come generare il database in base al modello esistente. Aggiunge anche un nuovo oggetto entità al contesto dell'oggetto e lo salva nel database.
Le procedure
Per definire un database basato sul modello esistente
Creare un'applicazione console.
Aggiungere un modello esistente all'applicazione.
- Aggiungere un modello vuoto denominato
SchoolModel
. Per creare un modello vuoto, vedere l'argomento Procedura: Creare un nuovo file con estensione edmx .
Il file SchoolModel.edmx viene aggiunto al progetto.
Copiare il contenuto concettuale, di archiviazione e di mapping per il modello School dall'argomento School Model .
Aprire il file SchoolModel.edmx e incollare il contenuto all'interno dei
edmx:Runtime
tag.
- Aggiungere un modello vuoto denominato
Aggiungi il codice seguente alla funzione principale. Il codice inizializza la stringa di connessione al server di database, visualizza lo script DDL, crea il database, aggiunge una nuova entità al contesto e salva le modifiche nel database.
// Initialize the connection string. String connectionString = "..."; using (SchoolEntities context = new SchoolEntities(connectionString)) { try { if (context.DatabaseExists()) { // Make sure the database instance is closed. context.DeleteDatabase(); } // View the database creation script. Console.WriteLine(context.CreateDatabaseScript()); // Create the new database instance based on the storage (SSDL) section // of the .edmx file. context.CreateDatabase(); // The following code adds a new objects to the context // and saves the changes to the database. Department dpt = new Department { Name = "Engineering", Budget = 350000.00M, StartDate = DateTime.Now }; context.Departments.AddObject(dpt); // An entity has a temporary key // until it is saved to the database. Console.WriteLine(dpt.EntityKey.IsTemporary); context.SaveChanges(); // The object was saved and the key // is not temporary any more. Console.WriteLine(dpt.EntityKey.IsTemporary); } catch (InvalidOperationException ex) { Console.WriteLine(ex.InnerException.Message); } catch (NotSupportedException ex) { Console.WriteLine(ex.InnerException.Message); } }
' Initialize the connection string. Dim connectionString As String = "metadata=res://*/School.csdl|res://*/School.ssdl|res://*/School.msl;provider=System.Data.SqlClient;" & "provider connection string=""Data Source=.;Initial Catalog=School;Integrated Security=True;MultipleActiveResultSets=True""" Using context As New SchoolEntities(connectionString) Try If context.DatabaseExists() Then ' Make sure the database instance is closed. context.DeleteDatabase() End If ' View the database creation script. Console.WriteLine(context.CreateDatabaseScript()) ' Create the new database instance based on the storage (SSDL) section ' of the .edmx file. context.CreateDatabase() ' The following code adds a new objects to the context ' and saves the changes to the database. Dim dpt As New Department() context.Departments.AddObject(dpt) ' An entity has a temporary key ' until it is saved to the database. Console.WriteLine(dpt.EntityKey.IsTemporary) context.SaveChanges() ' The object was saved and the key ' is not temporary any more. Console.WriteLine(dpt.EntityKey.IsTemporary) Catch ex As InvalidOperationException Console.WriteLine(ex.InnerException.Message) Catch ex As NotSupportedException Console.WriteLine(ex.InnerException.Message) End Try End Using