Freigeben über


Arbeiten mit der Datendefinitionssprache

Ab .NET Framework, Version 4, unterstützt Entity Framework die Datendefinitionssprache (Data Definition Language, DDL). Auf diese Weise können Sie eine Datenbankinstanz basierend auf der Verbindungszeichenfolge und den Metadaten des Speichermodells (SSDL) erstellen oder löschen.

Die folgenden Methoden für die ObjectContext verwenden die Verbindungszeichenfolge und den SSDL-Inhalt, um die folgenden Aufgaben auszuführen: die Datenbank erstellen oder löschen, überprüfen, ob die Datenbank existiert, und das generierte DDL-Skript anzeigen.

Hinweis

Das Ausführen der DDL-Befehle setzt ausreichende Berechtigungen voraus.

Die zuvor aufgeführten Methoden delegieren den größten Teil der Arbeit an den zugrunde liegenden ADO.NET Datenanbieter. Es liegt in der Verantwortung des Anbieters, sicherzustellen, dass die Benennungskonvention, die zum Generieren von Datenbankobjekten verwendet wird, mit konventionen konsistent ist, die für Abfragen und Aktualisierungen verwendet werden.

Das folgende Beispiel zeigt, wie Sie die Datenbank basierend auf dem vorhandenen Modell generieren. Außerdem wird dem Objektkontext ein neues Entitätsobjekt hinzugefügt und anschließend in der Datenbank gespeichert.

Prozeduren

So definieren Sie eine Datenbank basierend auf dem vorhandenen Modell

  1. Erstellen Sie eine Konsolenanwendung.

  2. Fügen Sie Ihrer Anwendung ein vorhandenes Modell hinzu.

    1. Fügen Sie ein leeres Modell mit dem Namen SchoolModelhinzu. Informationen zum Erstellen eines leeren Modells finden Sie im Thema "How to: Create a New .edmx File" .

    Die Datei SchoolModel.edmx wird ihrem Projekt hinzugefügt.

    1. Kopieren Sie den konzeptionellen, Speicher- und Zuordnungsinhalt für das Schulmodell aus dem Thema "Schulmodell ".

    2. Öffnen Sie die Datei SchoolModel.edmx, und fügen Sie den Inhalt in die edmx:Runtime Tags ein.

  3. Fügen Sie der Hauptfunktion den folgenden Code hinzu. Der Code initialisiert die Verbindungszeichenfolge mit Ihrem Datenbankserver, zeigt das DDL-Skript an, erstellt die Datenbank, fügt dem Kontext eine neue Entität hinzu und speichert die Änderungen in der Datenbank.

    // 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