ASP .NET Core - Usando EF Core 5 com MySql em uma API RESTFul - I


 Neste tutorial veremos como usar o EF Core 5.0 na abordagem Code-First no ASP .NET Core para implementar uma API RESTful.

Vamos usar as novas versões do EF Core e da ASP .NET Core para criar uma API RESTful usando o banco de dados MySql.

Vamos usar a abordagem Code-First que é útil principalmente no Domain-Driven Design visto que assim você se concentra no domínio de seu aplicativo e começa a criar classes para sua entidade de domínio em vez de projetar seu banco de dados primeiro e, em seguida, criar as classes que correspondem ao seu design de banco de dados.

Então mãos à obra...

Recursos usados :

Criando o projeto .NET Core 5.0 no VS 2019 Community

Vamos criar um projeto API aderente ao padrão RESTFul usando o VS 2019 Community.

Abra o VS 2019 Community e clique em Create New Project;

Selecione o template 'ASP .NET Core Web Application' e clique em Next;

Informe o nome ApiNet5, a localização do projeto e clique em Create;

Selecione .NET Core e ASP .NET Core 5.0, e,  marque a opção - Enable OpenAPI support - e clique em Create;

Ao final o projeto Web API será criado com a estrutura de arquivos e pastas conforme figura abaixo:

Executando o projeto no VS 2019 veremos que o uso de Swagger/Open API Specification virá habilitado por default. Isto foi possível graças a uma parceria entre o time responsável pelo desenvolvimento ASP.NET com os mantenedores do pacote open source Swashbuckle.AspNetCore.

A página inicial exibida será a seguinte:

E agora podemos testar a API que foi criada usando a interface do Swagger :

Se examinarmos o arquivo Startup e o método ConfigureServices() veremos a definição chamada ao método AddSwaggerGen e os métodos UseSwagger e UseSwaggerUi  :

public void ConfigureServices(IServiceCollection services)
{
    services.AddControllers();
    services.AddSwaggerGen(c =>
    {
          c.SwaggerDoc("v1", new OpenApiInfo { Title = "ApiNet5", Version = "v1" });
    });
}

Agora podemos remover o controlador e o arquivo de dados gerados pelo template pois não vamos mais precisar deles.

Configurando o acesso ao MySql

Vamos agora configurar o projeto para poder acessar o banco de dados MySQL usando o EF Core 5.0.

Para usar o Entity Framework Core e implementar a abordagem Code-First para o banco de dados MySQL, precisamos instalar os seguintes pacotes de dependências para o projeto:

Vamos usar o provedor Pomelo.EntityFrameworkCore.MySql que é o provedor Entity Framework Core mais popular para bancos de dados compatíveis com MySQL.

Ele suporta EF Core 5.01 e usa o MySqlConnector para comunicação de servidor de banco de dados de alto desempenho.

As seguintes versões de MySqlConnector, EF Core, .NET Standard e .NET Core são compatíveis com Pomelo.EntityFrameworkCore.MySql.

 Podemos ver que “5.0.0-alpha.2” é uma versão de pré-lançamento do Pomelo.EntityFrameworkCore.MySql, e até agora é a única versão que pode funcionar com EF Core 5.0.0 e .NET Core 3.1, por isso precisamos instalar “Pomelo.EntityFrameworkCore.MySql” da versão “5.0.0-alpha.2” para o projeto.

Vamos instalar esses pacotes usando a opção Tools->Nuget Package Manager -> Manage Nuget Packages for Solution;

E a seguir na guia Browse selecionar cada pacote, selecionar todos os projetos e clicar no botão para instalar:

Nota: Lembre-se de marcar a opção : Include prerelease

Ao final o nosso arquivo de projeto deverá possuir as seguintes referências:

Instalando o MySql Server e o MySQL WorkBench

Para gerenciar o banco de dados MySQL, precisamos do servidor MySQL que hospeda o banco de dados MySQL e também da ferramenta de gerenciamento - MySQL Workbench.

Mostraremos resumidamente como instalá-los em sua máquina. Se você já tem o servidor MySQL e o MySQL Workbench para usar, pule esta etapa.

O MySQL Community Server (versão mais recente 8.0.22) é gratuito para download e uso. Vá para a página de downloads da comunidade Oracle MySQL - https://dev.mysql.com/downloads/mysql/  para baixar o pacote MSI adequado ao seu sistema operacional e, em seguida, instale o MySQL Workbench e o MySQL Server a partir dele em sua máquina.

Se não tiver uma conta para fazer o login basta criar a conta que é grátis. (ou declinar e continuar...)

Duas coisas para lembrar, a primeira é que no instalador do MySQL, você precisa clicar em “Adicionar ...” para selecionar os produtos a serem instalados, você pode selecionar “MySQL Server 8.0” e “MySQL Workbench 8.0”.

A seguir é só seguir as orientações, e, não esquecer de definir uma senha para o usuário root para poder acessar o MySQL.

Assim que a instalação for concluída, você pode verificar se o MySQL Server está sendo executado em sua máquina.

Basta executar o “MySQL 8.0 Command Line Client(instalado durante a instalação do servidor MySQL) e a seguir digite:
 Show Databases;

Você também pode abrir o MySQL WorkBench usando a senha do usuário root para gerenciar os banco de dados.

Agora vamos definir a string de conexão com o MySql e para isso eu vou usar um banco de dados MySql  chamado alunosdb já existente e onde já temos uma tabela chamada alunos que foi criada com a seguinte estrutura:

Assim no arquivo appsettings.json vamos incluir a string de conexão para acessar o banco de dados alunosdb no MySql:

{
  "ConnectionStrings": {
    "DefaultConnection": "server=localhost; port=3306; database=alunosdb; user=root; password=*******; Persist Security Info=False; Connect Timeout=300"
  },

  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "AllowedHosts": "*"
}
 

Na segunda parte do artigo vamos iniciar a configuração do contexto e a criação da nossa API.

E a vida eterna é esta: que te conheçam a ti, o único Deus verdadeiro, e a Jesus Cristo, a quem enviaste.
João 17:3

Referências:


José Carlos Macoratti