Utilisation du langage de définition de données
À compter de .NET Framework version 4, Entity Framework prend en charge le langage de définition de données (DDL). Cela vous permet de créer ou de supprimer une instance de base de données selon la chaîne de connexion et les métadonnées du modèle de stockage (SSDL).
Les méthodes suivantes sur l'objet ObjectContext utilisent la chaîne de connexion et le contenu SSDL pour effectuer les opérations suivantes : créer ou supprimer la base de données, vérifier si la base de données existe et consulter le script DDL généré :
Notes
L'exécution des commandes DDL exige de disposer d'autorisations suffisantes.
Les méthodes précédemment répertoriées délèguent la plupart du travail au fournisseur de données ADO.NET sous-jacent. Il incombe au fournisseur de vérifier que la convention d'affectation des noms utilisée pour générer les objets de base de données correspond aux conventions utilisées pour l'interrogation et les mises à jour.
L'exemple suivant vous indique comment générer la base de données selon le modèle existant. Il ajoute également un nouvel objet entité au contexte de l'objet puis l'enregistre dans la base de données.
Procédures
Pour définir une base de données selon le modèle existant
Créez une application console.
Ajoutez un modèle existant à votre application.
- Ajoutez un modèle vide nommé
SchoolModel
. Pour créer un modèle vide, consultez la rubrique Comment : Créer un nouveau fichier .edmx .
Le fichier SchoolModel.edmx est ajouté à votre projet.
Copiez le contenu conceptuel, de stockage et de mappage du modèle Scolaire à partir de la rubrique Modèle scolaire .
Ouvrez le fichier SchoolModel.edmx et collez le contenu dans les balises
edmx:Runtime
.
- Ajoutez un modèle vide nommé
Ajoutez le code suivant à votre fonction principale. Le code initialise la chaîne de connexion à votre serveur de base de données, consulte le script DDL, crée la base de données, ajoute une nouvelle entité au contexte et enregistre les modifications dans la base de données.
// 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