Compartilhar via


Trabalhando com a linguagem de definição de dados

A partir do .NET Framework versão 4, o Entity Framework dá suporte à DDL (linguagem de definição de dados). Isso permite que você crie ou exclua uma instância de banco de dados com base na cadeia de conexão e nos metadados do modelo de armazenamento (SSDL).

Os seguintes métodos no ObjectContext utilizam a string de conexão e o conteúdo SSDL para realizar o seguinte: criar ou excluir o banco de dados, verificar se o banco de dados existe e exibir o script DDL gerado.

Observação

A execução dos comandos DDL pressupõe permissões suficientes.

Os métodos listados anteriormente delegam a maior parte do trabalho para o provedor de dados ADO.NET subjacente. É responsabilidade do provedor garantir que a convenção de nomenclatura usada para gerar objetos de banco de dados seja consistente com as convenções usadas para consultas e atualizações.

O exemplo a seguir mostra como gerar o banco de dados com base no modelo existente. Ele também adiciona um novo objeto de entidade ao contexto do objeto e, em seguida, salva-o no banco de dados.

Procedimentos

Para definir um banco de dados com base no modelo existente

  1. Crie um aplicativo de console.

  2. Adicione um modelo existente ao seu aplicativo.

    1. Adicionar um modelo vazio chamado SchoolModel. Para criar um modelo vazio, consulte o tópico Como criar um novo arquivo .edmx .

    O arquivo SchoolModel.edmx é adicionado ao seu projeto.

    1. Copie o conteúdo conceitual, de armazenamento e de mapeamento para o modelo de escola do tópico Modelo de Escola .

    2. Abra o arquivo SchoolModel.edmx e cole o conteúdo dentro das edmx:Runtime marcas.

  3. Adicione o código a seguir à sua função principal. O código inicializa a cadeia de conexão para o servidor de banco de dados, exibe o script DDL, cria o banco de dados, adiciona uma nova entidade ao contexto e salva as alterações no banco de dados.

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