Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

"Parameter count mismatch" error during adding Entity Framework migration under .NET Core 2.0

After migration of my project to .NET Core 2.0, fresh install of Visual Studio 15.5 and .NET CORE sdk 2.1.2, I am having an error when trying to add a migration using EF Core.

C:\Projects\SQLwallet\SQLwallet>dotnet ef migrations add IdentityServer.
An error occurred while calling method 'BuildWebHost' on class 'Program'.
Continuing without the application service provider. Error: Parameter count mismatch.


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

As a result an empty migration class is created, with empty Up() and Down() methods.

The program.cs looks like:

public class Program
{

    public static IWebHost BuildWebHost(string[] args, string environmentName)
    {...}

    public static void Main(string[] args)
    {


        IWebHost host;
        host = BuildWebHost(args, "Development");

Please advise. The migration worked fine while on Core 1.0. I have a IDesignTimeDbContextFactory implemented, and my DBContext class has a parameterless constructor, so it could not be the reason.

like image 354
Glebby Avatar asked Dec 14 '22 19:12

Glebby


1 Answers

My solution is to pass Array to HasData function, not generic List. If you use List, try to convert array with ToArray function.

Here is an example:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
      var users = new List<User>();
      var user1 = new User() { Id = 1, Username = "user_1" };
      var user2 = new User() { Id = 2, Username = "user_2" };

      users = new List<User>() { user1, user2 };
      modelBuilder.Entity<User>().HasData(users.ToArray());
}
like image 93
ddagsan Avatar answered Dec 17 '22 23:12

ddagsan