Database First

Este vídeo e o passo a passo fornecem uma introdução ao desenvolvimento do Database First usando o Entity Framework. O Database First permite fazer engenharia reversa de um modelo de banco de dados existente. O modelo é armazenado em um arquivo EDMX (extensão .edmx) e pode ser exibido e editado no Entity Framework Designer. As classes com as quais você interage em seu aplicativo são geradas automaticamente a partir do arquivo EDMX.

Assista ao vídeo

Este vídeo fornece uma introdução ao desenvolvimento do Database First usando o Entity Framework. O Database First permite fazer engenharia reversa de um modelo de banco de dados existente. O modelo é armazenado em um arquivo EDMX (extensão .edmx) e pode ser exibido e editado no Entity Framework Designer. As classes com as quais você interage em seu aplicativo são geradas automaticamente a partir do arquivo EDMX.

Apresentado por: Rowan Miller

Vídeo: WMV | MP4 | WMV (ZIP)

Pré-Requisitos

Você precisará ter pelo menos o Visual Studio 2010 ou o Visual Studio 2012 instalado para concluir este passo a passo.

Se você estiver usando o Visual Studio 2010, também precisará ter o NuGet instalado.

 

1. Criar um banco de dados existente

Normalmente, quando você está direcionando um banco de dados existente, ele já será criado, mas para este passo a passo, precisamos criar um banco de dados para acessar.

O servidor de banco de dados instalado com o Visual Studio é diferente dependendo da versão do Visual Studio que você instalou:

  • Se você estiver usando o Visual Studio 2010, criará um banco de dados SQL Express.
  • Se você estiver usando o Visual Studio 2012, criará um banco de dados LocalDB.

 

Vamos em frente e gerar o banco de dados.

  • Abra o Visual Studio

  • Exibir ->Gerenciador de Servidores

  • Clique com o botão direito do mouse em Conexões de Dados –> Adicionar conexão...

  • Caso você nunca tenha se conectado a um banco de dados do Gerenciador de Servidores, será necessário selecionar o Microsoft SQL Server como a fonte de dados

    Select Data Source

  • Conecte-se ao LocalDB ou ao SQL Express, dependendo de qual você instalou, e informe DatabaseFirst.Blogging como o nome do banco de dados

    Sql Express Connection DF

    LocalDB Connection DF

  • Selecione OK e você será perguntado se deseja criar um novo banco de dados, selecione Sim

    Create Database Dialog

  • O novo banco de dados agora aparecerá no Gerenciador de Servidores, clique com o botão direito do mouse nele e selecione Nova Consulta

  • Copie o seguinte SQL para a nova consulta, clique com o botão direito do mouse na consulta e selecione Executar

CREATE TABLE [dbo].[Blogs] (
    [BlogId] INT IDENTITY (1, 1) NOT NULL,
    [Name] NVARCHAR (200) NULL,
    [Url]  NVARCHAR (200) NULL,
    CONSTRAINT [PK_dbo.Blogs] PRIMARY KEY CLUSTERED ([BlogId] ASC)
);

CREATE TABLE [dbo].[Posts] (
    [PostId] INT IDENTITY (1, 1) NOT NULL,
    [Title] NVARCHAR (200) NULL,
    [Content] NTEXT NULL,
    [BlogId] INT NOT NULL,
    CONSTRAINT [PK_dbo.Posts] PRIMARY KEY CLUSTERED ([PostId] ASC),
    CONSTRAINT [FK_dbo.Posts_dbo.Blogs_BlogId] FOREIGN KEY ([BlogId]) REFERENCES [dbo].[Blogs] ([BlogId]) ON DELETE CASCADE
);

2. Criar o aplicativo

Para simplificar, vamos criar um aplicativo de console básico que usa o Database First para executar o acesso aos dados:

  • Abra o Visual Studio
  • Arquivo -> Novo -> Projeto
  • Selecione Windows no menu à esquerda e Aplicativo de console
  • Insira DatabaseFirstSample como o nome
  • Selecione OK

 

3. Modelo de Engenharia Reversa

Vamos usar o Entity Framework Designer, que está incluído como parte do Visual Studio, para criar nosso modelo.

  • Projeto –> Adicionar novo item...

  • Selecione Dados no menu esquerdo e Modelo de Dados de Entidade ADO.NET

  • Insira BloggingModel como o nome e clique em OK

  • Isso inicia o Assistente do Modelo de Dados de Entidade

  • Selecione Gerar do banco de dados e clique em Avançar

    Wizard Step 1

  • Selecione a conexão com o banco de dados criado na primeira seção, digite BloggingContext como o nome da cadeia de conexão e clique em Avançar

    Wizard Step 2

  • Clique na caixa de seleção ao lado de "Tabelas" para importar todas as tabelas e clique em "Concluir"

    Wizard Step 3

 

Depois que o processo de engenharia reversa for concluído, o novo modelo será adicionado ao seu projeto e aberto para exibição no Entity Framework Designer. Um arquivo App.config também foi adicionado ao seu projeto com os detalhes de conexão do banco de dados.

Model Initial

Etapas adicionais no Visual Studio 2010

Se você estiver trabalhando no Visual Studio 2010, há algumas etapas adicionais que você precisa seguir para atualizar para a versão mais recente do Entity Framework. A atualização é importante porque fornece acesso a uma superfície de API aprimorada, que é muito mais fácil de usar, bem como as correções de bug mais recentes.

Primeiro, precisamos obter a versão mais recente do Entity Framework do NuGet.

  • Projeto –> Gerenciar pacotes NuGet...Se você não tiver a opção Gerenciar Pacotes NuGet... deverá instalar a versão mais recente do NuGet
  • Selecione a guia Online
  • Selecione o pacote EntityFramework
  • Clique em Instalar

Em seguida, precisamos trocar nosso modelo para gerar código que use a API DbContext, que foi introduzida em versões posteriores do Entity Framework.

  • Clique com o botão direito do mouse em um local vazio do seu modelo no Designer do EF e selecione Adicionar item de geração de código...

  • Selecione Modelos Online no menu à esquerda e procure por DbContext

  • Selecione o Gerador DbContext EF 5.x para C#, insira BloggingModel como o nome e clique em Adicionar

    DbContext Template

 

4. Leitura e gravação de dados

Agora que temos um modelo, é hora de usá-lo para acessar alguns dados. As classes que usaremos para acessar dados estão sendo geradas automaticamente para você com base no arquivo EDMX.

Essa captura de tela é do Visual Studio 2012, se você estiver usando o Visual Studio 2010, os arquivos BloggingModel.tt e BloggingModel.Context.tt estarão diretamente em seu projeto, em vez de aninhados no arquivo EDMX.

Generated Classes DF

 

Implemente o método Main em Program.cs, conforme mostrado abaixo. Esse código cria uma nova instância do nosso contexto e a usa para inserir um novo Blog. Em seguida, usa uma consulta LINQ para recuperar todos os Blogs do banco de dados ordenado em ordem alfabética pelo Título.

class Program
{
    static void Main(string[] args)
    {
        using (var db = new BloggingContext())
        {
            // Create and save a new Blog
            Console.Write("Enter a name for a new Blog: ");
            var name = Console.ReadLine();

            var blog = new Blog { Name = name };
            db.Blogs.Add(blog);
            db.SaveChanges();

            // Display all Blogs from the database
            var query = from b in db.Blogs
                        orderby b.Name
                        select b;

            Console.WriteLine("All blogs in the database:");
            foreach (var item in query)
            {
                Console.WriteLine(item.Name);
            }

            Console.WriteLine("Press any key to exit...");
            Console.ReadKey();
        }
    }
}

Agora você pode executar e testar o aplicativo.

Enter a name for a new Blog: ADO.NET Blog
All blogs in the database:
ADO.NET Blog
Press any key to exit...

 

5. Lidando com alterações de banco de dados

Agora é hora de fazer algumas alterações em nosso esquema de banco de dados. Ao fazer isso também precisamos atualizar nosso modelo para refletir essas alterações.

A primeira etapa é fazer algumas alterações no esquema de banco de dados. Vamos adicionar uma tabela Usuários ao esquema.

  • Clique com o botão direito do mouse no banco de dados DatabaseFirst.Blogging no Gerenciador de Servidores e selecione Nova consulta
  • Copie o seguinte SQL para a nova consulta, clique com o botão direito do mouse na consulta e selecione Executar
CREATE TABLE [dbo].[Users]
(
    [Username] NVARCHAR(50) NOT NULL PRIMARY KEY,  
    [DisplayName] NVARCHAR(MAX) NULL
)

Agora que o esquema está atualizado, é hora de atualizar o modelo com essas alterações.

  • Clique com o botão direito do mouse em um local vazio do modelo no Designer EF e selecione "Atualizar modelo do banco de dados...", isso iniciará o Assistente de atualização

  • Na guia Adicionar do Assistente de atualização marque a caixa ao lado de Tabelas, isso indica que queremos adicionar novas tabelas do esquema. A guia Atualizar mostra todas as tabelas existentes no modelo que serão atualizadas. As guias Excluir mostram todas as tabelas que foram removidas do esquema e também serão removidas do modelo como parte da atualização. As informações nessas duas guias são detectadas automaticamente e fornecidas apenas para fins informativos, não é possível alterar nenhuma configuração.

    Refresh Wizard

  • Clique em Concluir no Assistente de atualização

 

O modelo agora está atualizado para incluir uma nova Entidade de usuário que mapeia para a tabela Usuários, que foi adicionada ao banco de dados.

Model Updated

Resumo

Neste passo a passo, analisamos o desenvolvimento do Database First, que nos permitiu criar um modelo no Designer EF com base em um banco de dados existente. Em seguida, usamos o modelo para ler e gravar alguns dados do banco de dados. Por fim, atualizamos o modelo para refletir as alterações feitas no esquema de banco de dados.