0
votes
//the Startup.cs file configuration settings.
public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc();
    services.AddEntityFramework().AddSqlServer().AddDbContext<PortContext>();
}

project.json

 {
  "dependencies": {
  "Microsoft.NETCore.App": {
  "version": "1.0.0",
  "type": "platform"
 },
  "Microsoft.EntityFrameworkCore.Design": {
  "version": "1.0.0-*",
  "type": "build"
 },
  "Microsoft.AspNetCore.Diagnostics": "1.0.0",
  "Microsoft.AspNetCore.Mvc": "1.0.0",
  "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
  "Microsoft.AspNetCore.Server.Kestrel": "1.0.0",
  "Microsoft.Extensions.Logging.Console": "1.0.0",
  "Microsoft.AspNetCore.StaticFiles": "1.0.0",
  "MailKit": "1.3.0-beta7",
  "Microsoft.Extensions.Configuration.Json": "1.0.0",
  "EntityFramework.Core": "7.0.0-rc1-final",
  "EntityFramework.MicrosoftSqlServer": "7.0.0-rc1-final",
  "mongocsharpdriver": "2.3.0-rc1",
  "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final"
 },

"tools": {
  "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final",
  "Microsoft.AspNetCore.Razor.Tools": {
  "version": "1.0.0-preview1-final",
  "imports": "portable-net45+win8+dnxcore50"
},
  "Microsoft.EntityFrameworkCore.Tools": "1.0.0-*"
},
"commands": {
"ef": "EntityFramework.Commands"
},
"frameworks": {
"netcoreapp1.0": {
  "imports": [
    "dotnet5.6",
    "portable-net45+win8"
  ]
 }
},

 "buildOptions": {
 "emitEntryPoint": true,
 "preserveCompilationContext": true
},

"runtimeOptions": {
 "configProperties": {
   "System.GC.Server": true
 }
},

"publishOptions": {
 "include": [
   "wwwroot",
   "web.config"
 ]
},

"scripts": {
"postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ]
 }
}

    And my PortContext.cs file's OnConfiguring method is given below.

    protected override void OnConfiguring(DbContextOptionsBuilder options)
    {
        var connString =Startup.Configuration["Data:PortContextConnection"];
        options.UseSqlServer(connString);
        base.OnConfiguring(options);
    }

When I run dotnet ef migrations add command I am getting the exception:

An error occurred while calling method 'ConfigureServices' on startup class 'WebApplication8.Startup'. Consider using IDbContextFactory to override the initialization of the DbContext at design-time. Error: Could not load type 'Microsoft.Extensions.DependencyInjection.ServiceCollectionExtensions' from assembly 'Microsoft.Extensions.DependencyInjection.Abstractions, Version=1.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'.

Can anyone help me solve this issue?

1
It clearly says IDbContextFactory dependency is not registered. Can you share your DbContext file as well. - Venky
Thank you for the response. And PortContext file is derived from the DbContext file. DbContext file which is from Microsoft.Data.Entity. In PortContext file there is nothing more than the table definitions with OnConfiguring method above. - thilanka1989
try services.AddDbContext<PortContext>(options => options.UseSqlServer(configuration["connectionstring path"], b => b.MigrationAssembly("host project namespace"))); You need Microsoft.EntityFrameworkCore package installed. - Venky
Thank you and I tried this also but MigrationAssembly is not recognized. I had to use MigrationsAssembly instead. - thilanka1989
And problem is not solved yet , still looking for a solution. Is this due to the versions of .net core - thilanka1989

1 Answers

0
votes

I have finally found a solution. This problem occurs when we used multiple unmatched versions of packages of our project.json. (Mostly rc1 or rc2 versions). I have rearranged the project.json dependencies and problem has solved.

  "dependencies": {
//"EntityFramework.Core": "7.0.0-rc1-final",
//"EntityFramework.MicrosoftSqlServer": "7.0.0-rc1-final",
"MailKit": "1.3.0-beta7",
//"EntityFramework.Core": "7.0.0-rc1-final",
"Microsoft.NETCore.App": {
  "version": "1.0.0",
  "type": "platform"
},
"Microsoft.AspNetCore.Mvc": "1.0.0",
"Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
"Microsoft.AspNetCore.Server.Kestrel": "1.0.0",
"Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0",
"Microsoft.Extensions.Configuration.FileExtensions": "1.0.0",
"Microsoft.Extensions.Configuration.Json": "1.0.0",
"Microsoft.Extensions.Logging": "1.0.0",
"Microsoft.Extensions.Logging.Console": "1.0.0",
"Microsoft.Extensions.Logging.Debug": "1.0.0",
//"Microsoft.Extensions.Configuration.UserSecrets": "1.0.0",
"Microsoft.EntityFrameworkCore": "1.0.0",
//"MyLibrary": "1.0.0-*",
"Microsoft.EntityFrameworkCore.SqlServer": "1.0.0",
"Microsoft.AspNetCore.StaticFiles": "1.0.0",
"Microsoft.AspNetCore.Diagnostics": "1.0.0",
"Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final",
//"OpenIddict": "1.0.0-alpha2-0331",
"Microsoft.EntityFrameworkCore.Design": {
  "version": "1.0.0-*",
  "type": "build"
},
//"EntityFramework.SqlServer": "7.0.0-beta7"

},

You can see I have removed all rc1 and rc2 versions from project.json..NET core versions are rapidly updating. I think we need to manage our code by using only one single set of updates instead of mixing all. Thank you to all who responded.