Partilhar via


Conectar-se e consultar o Banco de Dados SQL do Azure usando o .NET e o Entity Framework Core

Aplica-se a:Banco de Dados SQL do Azure

Este guia de início rápido descreve como conectar um aplicativo a um banco de dados no Banco de Dados SQL do Azure e executar consultas usando o .NET e o Entity Framework Core. Este início rápido segue a abordagem sem senha recomendada para se conectar ao banco de dados. Você pode saber mais sobre conexões sem senha no hub sem senha.

Pré-requisitos

Configurar o servidor de banco de dados

Conexões seguras e sem senha com o Banco de Dados SQL do Azure exigem determinadas configurações de banco de dados. Verifique as seguintes configurações em seu servidor lógico no Azure para se conectar corretamente ao Banco de Dados SQL do Azure em ambientes locais e hospedados:

  1. Para conexões de desenvolvimento local, verifique se o servidor lógico está configurado para permitir que o endereço IP da máquina local e outros serviços do Azure se conectem:

    • Navegue até a página Rede do seu servidor.

    • Alterne o botão de opção Redes selecionadas para mostrar opções de configuração adicionais.

    • Selecione Adicionar o endereço IPv4 do cliente (xx.xx.xx.xx) para adicionar uma regra de firewall que habilitará conexões do endereço IPv4 da máquina local. Como alternativa, você também pode selecionar + Adicionar uma regra de firewall para inserir um endereço IP específico de sua escolha.

    • Verifique se a caixa de seleção Permitir que os serviços e recursos do Azure acessem este servidor está marcada.

      A screenshot showing how to configure firewall rules.

      Aviso

      Habilitar a configuração Permitir que os serviços e recursos do Azure acessem esse servidor não é uma prática de segurança recomendada para cenários de produção. Aplicativos reais devem implementar abordagens mais seguras, como restrições de firewall mais fortes ou configurações de rede virtual.

      Você pode ler mais sobre configurações de segurança de banco de dados nos seguintes recursos:

  2. O servidor também deve ter a autenticação do Microsoft Entra habilitada e ter uma conta de administrador do Microsoft Entra atribuída. Para conexões de desenvolvimento local, a conta de administrador do Microsoft Entra deve ser uma conta com a qual você também pode fazer logon no Visual Studio ou na CLI do Azure localmente. Você pode verificar se o servidor tem a autenticação do Microsoft Entra habilitada na página ID do Microsoft Entra do servidor lógico.

    A screenshot showing how to enable Microsoft Entra authentication.

  3. Se estiver a utilizar uma conta pessoal do Azure, certifique-se de que tem a configuração do Microsoft Entra e configurada para a Base de Dados SQL do Azure para atribuir a sua conta como administrador de servidor. Se você estiver usando uma conta corporativa, o Microsoft Entra ID provavelmente já estará configurado para você.

Criar o projeto

As etapas nesta seção criam uma API Web Mínima do .NET usando a CLI do .NET ou o Visual Studio 2022.

  1. Na barra de menus do Visual Studio, navegue até Arquivo>Novo>Projeto...

  2. Na janela de diálogo, digite ASP.NET na caixa de pesquisa do modelo de projeto e selecione o resultado da API Web ASP.NET Core. Escolha Avançar na parte inferior da caixa de diálogo.

  3. Para o Nome do projeto, digite DotNetSQL. Deixe os valores padrão para o restante dos campos e selecione Avançar.

  4. Para o Framework, selecione .NET 7.0 e desmarque Usar controladores (desmarque para usar APIs mínimas). Este guia de início rápido usa um modelo de API mínima para simplificar a criação e a configuração de pontos finais.

  5. Selecione Criar. O novo projeto é aberto dentro do ambiente do Visual Studio.

Adicionar o Entity Framework Core ao projeto

Para se conectar ao Banco de Dados SQL do Azure usando o .NET e o Entity Framework Core, você precisa adicionar três pacotes NuGet ao seu projeto usando um dos seguintes métodos:

  1. Na janela Gerenciador de Soluções, clique com o botão direito do mouse no nó Dependências do projeto e selecione Gerenciar Pacotes NuGet.

  2. Na janela resultante, procure por EntityFrameworkCore. Localize e instale os seguintes pacotes:

  • Microsoft.EntityFrameworkCore: fornece funcionalidade essencial do Entity Framework Core
  • Microsoft.EntityFrameworkCore.SqlServer: fornece componentes adicionais para se conectar ao servidor lógico
  • Microsoft.EntityFrameworkCore.Design: Fornece suporte para executar migrações do Entity Framework

Como alternativa, você também pode executar o Install-Package cmdlet na janela Console do Gerenciador de Pacotes:

Install-Package Microsoft.EntityFrameworkCore
Install-Package Microsoft.EntityFrameworkCore.SqlServer
Install-Package Microsoft.EntityFrameworkCore.Design

Adicionar o código para se conectar ao Banco de Dados SQL do Azure

As bibliotecas principais do Entity Framework dependem das bibliotecas e Azure.Identity para implementar conexões sem senha com o Banco de Dados SQL do Microsoft.Data.SqlClient Azure. A Azure.Identity biblioteca fornece uma classe chamada DefaultAzureCredential que lida com a autenticação sem senha para o Azure.

DefaultAzureCredential Suporta vários métodos de autenticação e determina qual usar em tempo de execução. Essa abordagem permite que seu aplicativo use métodos de autenticação diferentes em ambientes diferentes (local versus produção) sem implementar código específico do ambiente. A visão geral da Biblioteca de Identidades do Azure explica a ordem e os locais em que DefaultAzureCredential as credenciais são procuradas.

Conclua as seguintes etapas para se conectar ao Banco de Dados SQL do Azure usando o Entity Framework Core e a classe subjacente DefaultAzureCredential :

  1. Adicione uma ConnectionStrings seção ao arquivo para que ele corresponda ao appsettings.Development.json código a seguir. Lembre-se de atualizar os espaços reservados e <your-database-name> .<your database-server-name>

    A cadeia de conexão sem senha inclui um valor de configuração de Authentication=Active Directory Default, que permite que o Entity Framework Core use DefaultAzureCredential para se conectar aos serviços do Azure. Quando o aplicativo é executado localmente, ele se autentica com o usuário com o qual você está conectado ao Visual Studio. Depois que o aplicativo é implantado no Azure, o mesmo código descobre e aplica a identidade gerenciada associada ao aplicativo hospedado, que você configurará posteriormente.

    Nota

    Cadeias de conexão sem senha são seguras para confirmar o controle do código-fonte, pois não contêm segredos, como nomes de usuário, senhas ou chaves de acesso.

    {
        "Logging": {
            "LogLevel": {
                "Default": "Information",
                "Microsoft.AspNetCore": "Warning"
            }
        },
        "ConnectionStrings": {
            "AZURE_SQL_CONNECTIONSTRING": "Data Source=passwordlessdbserver.database.windows.net;
                Initial Catalog=passwordlessdb; Authentication=Active Directory Default; Encrypt=True;"
        }
    }
    
  2. Adicione o seguinte código ao Program.cs arquivo acima da linha de código que lê var app = builder.Build();. Este código executa as seguintes configurações:

    • Recupera a cadeia de conexão de banco de dados sem senha do appsettings.Development.json arquivo para desenvolvimento local ou das variáveis de ambiente para cenários de produção hospedados.

    • Registra a classe Entity Framework Core DbContext com o contêiner de injeção de dependência .NET.

      var connection = String.Empty;
      if (builder.Environment.IsDevelopment())
      {
          builder.Configuration.AddEnvironmentVariables().AddJsonFile("appsettings.Development.json");
          connection = builder.Configuration.GetConnectionString("AZURE_SQL_CONNECTIONSTRING");
      }
      else
      {
          connection = Environment.GetEnvironmentVariable("AZURE_SQL_CONNECTIONSTRING");
      }
      
      builder.Services.AddDbContext<PersonDbContext>(options =>
          options.UseSqlServer(connection));
      
  3. Adicione os seguintes pontos de extremidade à parte inferior do Program.cs arquivo acima app.Run() para recuperar e adicionar entidades no banco de dados usando a PersonDbContext classe.

    app.MapGet("/Person", (PersonDbContext context) =>
    {
        return context.Person.ToList();
    })
    .WithName("GetPersons")
    .WithOpenApi();
    
    app.MapPost("/Person", (Person person, PersonDbContext context) =>
    {
        context.Add(person);
        context.SaveChanges();
    })
    .WithName("CreatePerson")
    .WithOpenApi();
    

    Finalmente, adicione as Person classes e PersonDbContext à parte inferior do Program.cs arquivo. A classe Person representa um único registro na tabela do Persons banco de dados. A PersonDbContext classe representa o banco de dados Person e permite que você execute operações nele por meio de código. Você pode ler mais sobre DbContext na documentação de Introdução ao Entity Framework Core.

    public class Person
    {
        public int Id { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
    }
    
    public class PersonDbContext : DbContext
    {
        public PersonDbContext(DbContextOptions<PersonDbContext> options)
            : base(options)
        {
        }
    
        public DbSet<Person> Person { get; set; }
    }
    

Executar as migrações para criar o banco de dados

Para atualizar o esquema de banco de dados para corresponder ao seu modelo de dados usando o Entity Framework Core, você deve usar uma migração. As migrações podem criar e atualizar incrementalmente um esquema de banco de dados para mantê-lo sincronizado com o modelo de dados do seu aplicativo. Você pode saber mais sobre esse padrão na visão geral das migrações.

  1. Abra uma janela de terminal para a raiz do seu projeto.

  2. Execute o seguinte comando para gerar uma migração inicial que possa criar o banco de dados:

    Add-Migration InitialCreate
    
  3. Uma Migrations pasta deve aparecer no diretório do projeto, juntamente com um arquivo chamado InitialCreate com números exclusivos pendentes. Execute a migração para criar o banco de dados usando o seguinte comando:

    Update-Database
    

    As ferramentas do Entity Framework Core criarão o esquema de banco de dados no Azure definido pela PersonDbContext classe.

Testar a aplicação localmente

O aplicativo está pronto para ser testado localmente. Verifique se você está conectado ao Visual Studio ou à CLI do Azure com a mesma conta definida como administrador para seu banco de dados.

  1. Pressione o botão Executar na parte superior do Visual Studio para iniciar o projeto de API.

  2. Na página Swagger UI, expanda o método POST e selecione Experimentar.

  3. Modifique o JSON de exemplo para incluir valores para o nome e o sobrenome. Selecione Executar para adicionar um novo registro ao banco de dados. A API retorna uma resposta bem-sucedida.

    A screenshot showing how to test the API.

  4. Expanda o método GET na página Swagger UI e selecione Experimentar. Selecione Executar e a pessoa que você acabou de criar será retornada.

Implementar no Serviço de Aplicações do Azure

O aplicativo está pronto para ser implantado no Azure. O Visual Studio pode criar um Serviço de Aplicativo do Azure e implantar seu aplicativo em um único fluxo de trabalho.

  1. Verifique se o aplicativo foi interrompido e compilado com êxito.

  2. Na janela Gerenciador de Soluções do Visual Studio, clique com o botão direito do mouse no nó do projeto de nível superior e selecione Publicar.

  3. Na caixa de diálogo de publicação, selecione Azure como o destino de implantação e, em seguida, selecione Avançar.

  4. Para o destino específico, selecione Serviço de Aplicativo do Azure (Windows) e selecione Avançar.

  5. Selecione o ícone verde + para criar um novo Serviço de Aplicativo para implantar e insira os seguintes valores:

    • Nome: Deixe o valor padrão.

    • Nome da assinatura: selecione a assinatura na qual implantar.

    • Grupo de recursos: Selecione Novo e crie um novo grupo de recursos chamado msdocs-dotnet-sql.

    • Plano de hospedagem: Selecione Novo para abrir a caixa de diálogo do plano de hospedagem. Deixe os valores padrão e selecione OK.

    • Selecione Criar para fechar a caixa de diálogo original. O Visual Studio cria o recurso Serviço de Aplicativo no Azure.

      A screenshot showing how to deploy with Visual Studio.

  6. Depois que o recurso for criado, verifique se ele está selecionado na lista de serviços de aplicativo e selecione Avançar.

  7. Na etapa Gerenciamento de API, marque a caixa de seleção Ignorar esta etapa na parte inferior e selecione Concluir.

  8. Selecione Publicar no canto superior direito do resumo do perfil de publicação para implantar o aplicativo no Azure.

Quando a implantação termina, o Visual Studio inicia o navegador para exibir o aplicativo hospedado, mas neste momento o aplicativo não funciona corretamente no Azure. Você ainda precisa configurar a conexão segura entre o Serviço de Aplicativo e o banco de dados SQL para recuperar seus dados.

Conectar o Serviço de Aplicativo ao Banco de Dados SQL do Azure

As etapas a seguir são necessárias para conectar a instância do Serviço de Aplicativo ao Banco de Dados SQL do Azure:

  1. Crie uma identidade gerenciada para o Serviço de Aplicativo. A Microsoft.Data.SqlClient biblioteca incluída em seu aplicativo descobrirá automaticamente a identidade gerenciada, assim como descobriu seu usuário local do Visual Studio.
  2. Crie um usuário do banco de dados SQL e associe-o à identidade gerenciada do Serviço de Aplicativo.
  3. Atribua funções SQL ao usuário do banco de dados que permitam leitura, gravação e potencialmente outras permissões.

Há várias ferramentas disponíveis para implementar essas etapas:

O Service Connector é uma ferramenta que simplifica conexões autenticadas entre diferentes serviços no Azure. Atualmente, o Service Connector dá suporte à conexão de um Serviço de Aplicativo a um banco de dados SQL por meio da CLI do Azure usando o az webapp connection create sql comando. Este único comando completa as três etapas mencionadas acima para você.

az webapp connection create sql
-g <your-resource-group>
-n <your-app-service-name>
--tg <your-database-server-resource-group>
--server <your-database-server-name>
--database <your-database-name>
--system-identity

Você pode verificar as alterações feitas pelo Service Connector nas configurações do Serviço de Aplicativo.

  1. Navegue até a página Identidade do seu Serviço de Aplicativo. Na guia Sistema atribuído, o Status deve ser definido como Ativado. Esse valor significa que uma identidade gerenciada atribuída ao sistema foi habilitada para seu aplicativo.

  2. Navegue até a página Configuração do seu Serviço de Aplicativo. Na guia Cadeias de conexão, você verá uma cadeia de conexão chamada AZURE_SQL_CONNECTIONSTRING. Selecione o texto Clique para mostrar o valor para exibir a cadeia de conexão sem senha gerada. O nome dessa cadeia de conexão se alinha com o que você configurou em seu aplicativo, portanto, ele será descoberto automaticamente ao ser executado no Azure.

Importante

Embora essa solução forneça uma abordagem simples para começar, ela não é uma prática recomendada para ambientes de produção corporativos. Nesses cenários, o aplicativo não deve executar todas as operações usando uma única identidade elevada. Você deve tentar implementar o princípio de menor privilégio configurando várias identidades com permissões específicas para tarefas específicas.

Você pode ler mais sobre como configurar funções de banco de dados e segurança nos seguintes recursos:

Tutorial: Proteger um banco de dados no Banco de Dados SQL do Azure

Autorizar o acesso à Base de Dados SQL

Testar o aplicativo implantado

Navegue até a URL do aplicativo para testar se a conexão com o Banco de Dados SQL do Azure está funcionando. Você pode localizar a URL do seu aplicativo na página de visão geral do Serviço de Aplicativo. Anexe o caminho ao final da URL para navegar até o /person mesmo ponto de extremidade testado localmente.

A pessoa que você criou localmente deve ser exibida no navegador. Parabéns! Seu aplicativo agora está conectado ao Banco de Dados SQL do Azure em ambientes locais e hospedados.

Limpar os recursos

Quando terminar de trabalhar com o Banco de Dados SQL do Azure, exclua o recurso para evitar custos não intencionais.

  1. Na barra de pesquisa do portal do Azure, procure SQL do Azure e selecione o resultado correspondente.

  2. Localize e selecione seu banco de dados na lista de bancos de dados.

  3. Na página Visão Geral do Banco de Dados SQL do Azure, selecione Excluir.

  4. Na página Azure que você tem certeza de que deseja excluir... que é aberta, digite o nome do seu banco de dados para confirmar e selecione Excluir.

Próximos passos