'Microsoft.EntityFrameworkCore.Infrastructure.IDbContextFactory`1 [TContext]' violates the restriction of a parameter of type 'TContext "

This is my first time using asp 5 \ core1 and I had a problem installing the framework dbcontext entity

I have one class library with my object

public class Utilizador { public Utilizador() { } public int id { get; set; } } 

Then I have a Web Api project with a link to my class and context

 public class Context : DbContext { public Context(DbContextOptions<Context> options) : base(options) { } public DbSet<Utilizador> Utilizadores { get; set; } } 

My package .json it like this regarding entity structure

 "dependencies": { "Microsoft.NETCore.App": { "version": "1.0.0-rc2-3002702", "type": "platform" }, "Microsoft.AspNetCore.Mvc": "1.0.0-rc2-final", "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0-rc2-final", "Microsoft.AspNetCore.Server.Kestrel": "1.0.0-rc2-final", "Microsoft.AspNetCore.Mvc.WebApiCompatShim": "1.0.0-rc2-final", "Microsoft.EntityFrameworkCore": "1.0.0-rc2-final", "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview1-final" , "Microsoft.EntityFrameworkCore.SqlServer": "1.0.0-rc2-final" }, "tools": { "Microsoft.AspNetCore.Server.IISIntegration.Tools": { "version": "1.0.0-preview1-final", "imports": "portable-net45+win8+dnxcore50" }, "Microsoft.EntityFrameworkCore.Tools": { "version": "1.0.0-preview1-final", "imports": [ "portable-net45+win8+dnxcore50", "portable-net45+win8" ] } }, "frameworks": { "netcoreapp1.0": { "imports": [ "dotnet5.6", "dnxcore50", "portable-net45+win8" ] } } 

And finally, my startup.cs

  public void ConfigureServices(IServiceCollection services) { // Add framework services. services.AddMvc(); services.AddEntityFramework().AddEntityFrameworkSqlServer().AddDbContext<Context>(options => options.UseSqlServer(Configuration["ConnectionStrings:DefaultConnection"])); } 

I used the Add-Migrations command and created my database and one table called __MigrationsHistory, but did not create it for my class, so I used the "mycontext" Add-Migration and everything stopped working, now every time I try to migrate I get this error:

 System.ArgumentException: GenericArguments[0], 'WebApiSolution.Migrations.Context', on 'Microsoft.EntityFrameworkCore.Infrastructure.IDbContextFactory`1[TContext]' violates the constraint of type 'TContext'. ---> System.TypeLoadException: GenericArguments[0], 'WebApiSolution.Migrations.Context', on 'Microsoft.EntityFrameworkCore.Infrastructure.IDbContextFactory`1[TContext]' violates the constraint of type parameter 'TContext'. at System.RuntimeTypeHandle.Instantiate(RuntimeTypeHandle handle, IntPtr* pInst, Int32 numGenericArgs, ObjectHandleOnStack type) at System.RuntimeTypeHandle.Instantiate(Type[] inst) at System.RuntimeType.MakeGenericType(Type[] instantiation) --- End of inner exception stack trace --- at System.RuntimeType.ValidateGenericArguments(MemberInfo definition, RuntimeType[] genericArguments, Exception e) at System.RuntimeType.MakeGenericType(Type[] instantiation) at Microsoft.EntityFrameworkCore.Design.DbContextOperations.FindContextFactory(Type contextType) at Microsoft.EntityFrameworkCore.Design.DbContextOperations.FindContextTypes() at Microsoft.EntityFrameworkCore.Design.DbContextOperations.FindContextType(String name) at Microsoft.EntityFrameworkCore.Design.DbContextOperations.CreateContext(String contextType) at Microsoft.EntityFrameworkCore.Design.MigrationsOperations.RemoveMigration(String contextType, Boolean force) at Microsoft.EntityFrameworkCore.Tools.Cli.MigrationsRemoveCommand.<>c__DisplayClass0_0.<Configure>b__0() at Microsoft.Extensions.CommandLineUtils.CommandLineApplication.Execute(String[] args) at Microsoft.EntityFrameworkCore.Tools.Cli.Program.Main(String[] args) GenericArguments[0], 'WebApiSolution.Migrations.Context', on 'Microsoft.EntityFrameworkCore.Infrastructure.IDbContextFactory`1[TContext]' violates the constraint of type 'TContext'. 

Can anyone point me in the right direction? What am I doing wrong, what am I missing here?

thanks

+5
source share
1 answer

Try adding a database initializer to your context:

Edit: my original answer was based on Entity Framework 6. Database.EnsureCreated () sounds like it could be the equivalent method in the latest version:

  public Context(DbContextOptions<Context> options) : base(options) { Database.EnsureCreated(); } 
0
source

All Articles