web-dev-qa-db-fra.com

Erreur de migration - impossible d'échafauder les littéraux de type DirectConstructorBinding

Je suis le cours Pluralsight de Julie Lerman - EntityFramework Core 2: Getting Started. Dans ce cours, elle a 3 projets. Les deux premières Data et Domain sont basées sur la bibliothèque .NET Standard. Le troisième projet Web est une application Web .NET Core.

J'ai suivi cette structure. Dans Data, j'ai ajouté une classe POCO appelée Client.

Dans Domain, j'ai ajouté une classe appelée TestDbContext comme ceci:

public class TestDbContext : DbContext
{
    public DbSet<Client> Clients { get; set; }

    public TestDbContext(DbContextOptions<TestDbContext> options) : base(options)
    {

    }
}

Suivant son exemple, dans le fichier Startup.cs de mon projet Web, j'ai procédé comme suit pour injecter le fournisseur et la chaîne de connexion dans DbContext.

public void ConfigureServices(IServiceCollection services)
{
   services.AddMvc();
   services.AddDbContext<TestDbContext>(options =>
   {
       options.UseSqlServer(Configuration.GetConnectionString("TestConnection"));
   });
}

Enfin, je tente d’ajouter une migration à ce contexte. J'ai le projet Web défini comme projet de démarrage. Dans la console du gestionnaire de packages, je saisis add-migration initial.

J'obtiens alors l'erreur suivante: The current CSharpHelper cannot scaffold literals of type 'Microsoft.EntityFrameworkCore.Metadata.Internal.DirectConstructorBinding'. Configure your services to use one that can.

Dans la vidéo de Julie, tout cela a fonctionné pour elle et le package de migration a été créé. Cependant, pour moi - juste l'erreur. Des indices sur ce qui peut se passer?

4
RHarris

Vérifiez la version des packages de votre projet dans le fichier '.csproj'. Auparavant, j'ai le même problème pour la version mitch match de AspNet Core et EntityFramework Core (je suppose). Faire les mêmes travaux pour moi bien. Solution trouvée Ici

Pour moi maintenant. 

<PackageReference Include="Microsoft.AspNetCore.App" Version="2.1.0-rc1-final" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.1.0-rc1-final" PrivateAssets="All" /> 
9
Jaggesher Mondal

Ajoutez 3 paquets avec la même version à partir du gestionnaire de paquets nuget

<PackageReference Include="Microsoft.EntityFrameworkCore" Version="2.1.2" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="2.1.2" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="2.1.2" />
4
Alamgir

Cela a fait le tour pour moi!

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

<PropertyGroup>
<TargetFramework>netcoreapp2.0</TargetFramework>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.5" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="2.1.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="2.1.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.1.0" />
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.0.1" />
</ItemGroup>

<ItemGroup>
<DotNetCliToolReference  Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.1.0- preview1-final" />
</ItemGroup>
</Project>
1
user2659261