ConversorSqliteToSqlServer

Teste para criação de um conversor de base dados SQLite para SQLServer utilizando o Entity Framework Core

Documentação do EF-c: https://docs.microsoft.com/pt-br/ef/core/miscellaneous/cli/dotnet

Extensões utilizadas: Docker NutGet Package Manager SQL Server(mssql)

Programas: Docker - https://www.docker.com/

Comando para verificar a versão do dotnet

comando: dotnet --version

3.1.300


Comando para verificar a versão do dotnet-ef

comando: dotnet tool list -g

ID do Pacote | Versão | Comandos

dotnet-ef | 3.1.7 | dotnet-ef

Obs: As demais ferramentas que serão instaladas precisam ser iguais a versão do dotnet-ef ou menores para funcionarem.


Lista de comandos dentro de EF

comando: dotnet ef -h

Entity Framework Core .NET Command-line Tools 3.1.7

Usage: dotnet ef [options] [command]

Options: --version Show version information -h|--help Show help information -v|--verbose Show verbose output. --no-color Don't colorize output. --prefix-output Prefix output with level.

Commands: database Commands to manage the database. dbcontext Commands to manage DbContext types. migrations Commands to manage migrations.

Use "dotnet ef [command] --help" for more information about a command.


Lista de comandos dentro do EF DbContext

comando: dotnet ef dbcontext -h

Usage: dotnet ef dbcontext [options] [command]

Options: -h|--help Show help information -v|--verbose Show verbose output. --no-color Don't colorize output. --prefix-output Prefix output with level.

Commands: info Gets information about a DbContext type. list Lists available DbContext types. scaffold Scaffolds a DbContext and entity types for a database. script Generates a SQL script from migrations.

Use "dbcontext [command] --help" for more information about a command.


Criando o projeto

comando: dotnet new console -n NomeDoProjeto

The template "Console Application" was created successfully.

Processing post-creation actions... Running 'dotnet restore' on NomeDoProjeto\NomeDoProjeto.csproj... Determinando os projetos a serem restaurados... D:\Projetos\test\NomeDoProjeto\NomeDoProjeto.csproj restaurado (em 200 ms).

Restore succeeded.


Comando para criar o scaffold do database Sqlite

Comando: dotnet ef dbcontext scaffold 'data source=databaseLocation/database.sqlite' Microsoft.EntityFrameworkCore.Sqlite


Comando para gerar a imagem do banco SQL-Server

Comando: docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=P@ssword1' -p 1433:1433 -d microsoft/mssql-server-linux

-e => Significa o ambiente -p => Significa qual porta sera aberta para o bando de dados -d => Significa que é uma dependência de desenvolvimento

Após rodar o comando, algumas alterações no DatabaseEFcore.csproj precisaram ser alteradas na linha onde contém PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="3.1.7" deverá ser alterada para PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="3.1.7" .

A classe dataBaseContext.cs deverá ficar assim:

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        if (!optionsBuilder.IsConfigured)
        {
            optionsBuilder.UseSqlServer("Server=127.0.0.1,1433;Database=EcoletaDatabase;User id=sa;Password=P@ssword1");
        }
    }

Comando para rodar as migrations

Comando: dotnet ef migrations add init

Build started... Build succeeded. Done. To undo this action, use 'ef migrations remove'


Comando para atualizar a base de dados com as estruturas do Sqlite

Comando: dotnet ef database update

Build started... Build succeeded. Applying migration '20200904012718_init'. Done.