7
respostas

Erro no Add-Migration

Quando executo o Add-Migration pela primeira vez, dá esse erro:

"Unable to create an object of type 'Contexto'. Add an implementation of 'IDesignTimeDbContextFactory' to the project, or see https://go.microsoft.com/fwlink/?linkid=851728 for additional patterns supported at design time."

Já abriram um tópico aqui no fórum sobre isso, mas a solução foi muito vaga. Preciso de uma orientação a mais, se possível.

7 respostas

Olá, Felipe

O curso foi gravado com a versão ASP.NET Core 1.1 . Aparentemente você criou o projeto com a versão ASP.NET Core 2, é isso? Dê uma olhada na versão ASP.NET Core do do projeto, por favor.

Obrigado pelo retorno Marcelo,

Como posso verificar a versão ASP.NET Core do meu projeto ?

Felipe, abra o arquivo CasaDoCodigo.csproj com o bloco de notas ou outro editor de texto e dê uma olhada nesta seção do arquivo:

  <ItemGroup>
    <PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.0.0" />
    <PackageReference Include="Microsoft.AspNetCore" Version="1.1.1" />
    <PackageReference Include="Microsoft.AspNetCore.Mvc" Version="1.1.2" />
    <PackageReference Include="Microsoft.AspNetCore.Session" Version="1.1.1" />
    <PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="1.1.1" />
    <PackageReference Include="Microsoft.EntityFrameworkCore" Version="1.1.1" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="1.1.1" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="1.1.0" />
    <PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="1.1.1" />
    <PackageReference Include="Microsoft.VisualStudio.Web.BrowserLink" Version="1.1.0" />
  </ItemGroup>

É, realmente está em Asp.Net Core 2.0.

  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.5" />
    <PackageReference Include="Microsoft.EntityFrameworkCore" Version="2.0.1" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="2.0.1" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.0.1" />
  </ItemGroup>

Você pode fazer o seguinte:

1- faça uma cópia de segurança do arquivo do projeto (.csproj)

2- edite esse arquivo do projeto, substituindo o trecho que você postou pelo trecho que eu postei (para fazer um downgrade "manual")

3- Entre em Nuget Package Manager > Package Manager Console

4- Digite dotnet restore no console, para instalar/restaurar o que está faltando

Se não funcionar, veja os erros que estão ocorrendo e poste aqui pra gente. Mas não se esqueça de fazer uma cópia de segurança do projeto antes de modificar.

Como que esta a tua classe Contexto.cs ? Aqui eu usei a ultima versão e ta tudo funcionando

Olá, Rafael

Estou trabalhando numa migração de projeto de ASP.NET Core 1.x para ASP.NET Core 2.0 e lembrei de você. Pra mim funcionou, da seguinte forma:

  • Alterei o arquivo .csproj (no notepad mesmo):
    <ItemGroup>
      <PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.0" />
    </ItemGroup>

Note que esse Microsoft.AspNetCore.All é novo. Ele é um Metapacote, ou seja, um pacote que instala todos os pacotes necessários para o ASP.NET Core, incluindo os pacotes Entity Framework Core.

  • Alterei a versão de ferramentas de linha de comando
    <ItemGroup>
     <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" />
     <DotNetCliToolReference Include="Microsoft.Extensions.SecretManager.Tools" Version="2.0.0" />
     <DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.0" />
    </ItemGroup>

Fiz somente essas alterações, e a aplicação funcionou. Também não alterei o Contexto.cs.