5

È la mia prima volta con asp 5 \ CORE1 e sto avendo la fissazione di un quadro un'entità DbContext'Microsoft.EntityFrameworkCore.Infrastructure.IDbContextFactory`1 [tcontext]' viola il vincolo del parametro di tipo 'tcontext'

problema ho una libreria di classi con il mio oggetto

public class Utilizador 
    { 
     public Utilizador() 
     { 

     } 

     public int id { get; set; } 
    } 

poi ho un progetto Web Api con un riferimento alla mia classe e un contesto

public class Context : DbContext 
{ 
    public Context(DbContextOptions<Context> options) 
     : base(options) 
    { 

    } 

    public DbSet<Utilizador> Utilizadores { get; set; } 

} 

mio package.json sua lik e questo per quanto riguarda Entity Framework

"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" 
     ] 
    } 
    } 

E infine i miei startup.cs

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

    } 

ho usato il comando add-Migrazioni e creato il mio database e una tabella chiamata __MigrationsHistory sbagliando di poco creato alcun modo per la mia classe ho usato l'Add-migrazione "myContext" e tutto ciò che ha smesso di funzionare, ora ogni volta che cerco di fare una migrazione ottengo questo errore:

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'. 

qualcuno può per favore puntare io nella giusta direzione? cosa sto sbagliando, cosa mi manca qui?

grazie

risposta

0

provare ad aggiungere un inizializzatore database per vostro contesto:

Edit: La mia risposta iniziale era basato su Entity Framework 6. Database.EnsureCreated() suona come potrebbe essere il metodo equivalente nella sua ultima stampa:

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

non ha ancora lavorato cant anche trovare quei metodi per il database, so che ci sono stati alcuni piuttosto grandi cambiamenti nel l'ultima versione ed è difficile trovare ppl che lo utilizzano ancora ...:/ – Shakawkaw

+0

il problema era in realtà le dipendenze del pacchetto a nd tools, l'ho rifatto e aggiunto un po 'di più, riavviato vs e ora funziona ... forse un cattivo riferimento o qualcosa era il problema ... se necessario posterò le modifiche più tardi ... grazie – Shakawkaw

+1

@Shakawkaw Puoi postare esattamente cosa ha risolto il tuo problema? Sto avendo lo stesso. Seguendo un tutorial per imparare, non sono sicuro di cosa c'è di sbagliato nei miei strumenti project.json e nelle dipendenze. – Hank

Problemi correlati