Não cria banco de dados no MySQL a partir do ASP .NET Core

3 respostas
aspnetcsharp
Y

Olá pessoa, estou com um problema quanto algumas migrations no meu app ASP .NET Core.
Ainda sou iniciante em C#, ASP .NET Core e tal. Enfim, gerei um scaffold para um webapp, evidentemente usando ASP .NET Core, até aí tudo bem, o problema é na mudança de SGBD, onde eu mudei de SQL Server para MySQL, tendo em vista que antes de eu aplicar essa mudança de SGBD, a aplicação estava funcionando perfeitamente, inserindo, deletando e atualizando os dados conforme minha necessidade, no entanto, quando eu adicionei os seguintes pacotes via dotnet add, o app não criou a base de dados e muito menos as tabelas necessárias.

Pacotes adicionados:

dotnet add package Pomelo.EntityFrameworkCore.MySql
dotnet add package Pomelo.EntityFrameworkCore.MySql.Design
dotnet add package Microsoft.EntityFrameworkCore.Tools

Vejam meu FirstProject.csproj:

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <UserSecretsId>48eb5dc9-c21c-4534-bef1-a9745a5b3bbc</UserSecretsId>
    <DockerDefaultTargetOS>Windows</DockerDefaultTargetOS>
    <DockerfileContext>.</DockerfileContext>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="3.1.9" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="3.1.9" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="3.1.9">
      <PrivateAssets>all</PrivateAssets>
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
    </PackageReference>
    <PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.10.9" />
    <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="3.1.4" />
    <PackageReference Include="Pomelo.EntityFrameworkCore.MySql" Version="3.2.4" />
    <PackageReference Include="Pomelo.EntityFrameworkCore.MySql.Design" Version="1.1.2" />
  </ItemGroup>

</Project>

Percebam que ainda contem o SQL Server e esse SQLite (não me pergunte como foi parar aí kkk), enfim quero apenas utilizar o MySQL. Porém, fiquei com receio de deletar essas linhas com o SQL Server e SQLite; (me orientem aí, please)

Vejam também meu arquivo Startup.cs:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.HttpsPolicy;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.EntityFrameworkCore;
using FirstProject.Data.Data;

namespace FirstProject {
    public class Startup {
        public Startup(IConfiguration configuration) {
            Configuration = configuration;
        }

        public IConfiguration Configuration { get; }

        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services) {
            /*services.AddRazorPages();

            services.AddDbContext<Context>(options =>
                    options.UseSqlServer(Configuration.GetConnectionString("Context")));*/
            var host = Configuration["DBHOST"] ?? "localhost";
            var port = Configuration["DBPORT"] ?? "3306";
            var password = Configuration["DBPASSWORD"] ?? "yuriMELO123";

            services.AddDbContext<Context>(options => 
                options.UseMySql($"server={host};userid=root;pwd={password};"
                + $"port={port};database=FirstDatabase"));
            
            services.AddMvc(); // Essa linha não existia com o scaffold, adicionei conforme o tutotial mvc mandou.
        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                app.UseExceptionHandler("/Error");
                // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
                app.UseHsts();
            }

            app.UseHttpsRedirection();
            app.UseStaticFiles();

            app.UseRouting();

            app.UseAuthorization();

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapRazorPages();
            });
        }
    }
}

Meu models, chamado Custumer:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.ComponentModel.DataAnnotations;

namespace FirstProject.models {
    public class Custumer {
        public string id { get; set; }
        public string firstName { get; set; }
        public string surname { get; set; }
        public int age { get; set; }
        [DataType(DataType.Date)]
        public DateTime creationDate { get; set; }

    }
}

O que há de errado com esses códigos?
Valeu gente!

3 Respostas

J

Então pelo menos arruma essa bagunça.

D

Classe Context, tem como colocar?

G
  1. Qual tutorial você seguiu? Que eu me lembre, as migrations do EF não criam o banco de dados, somente as tabelas.

  2. Você rodou o comando para gerar as migrations e para aplica-las? Qual erro deu?

Criado 3 de novembro de 2020
Ultima resposta 4 de nov. de 2020
Respostas 3
Participantes 4