In un progetto ASP.NET Core 1.0.1, utilizzando Entity Framework Core e ASP.NET Identity, ho il seguente contesto:
public class Context : IdentityDbContext<User, Role, Int32, UserClaim, UserRole, UserLogin, RoleClaim, UserToken> {
public Context(DbContextOptions options) : base(options) { }
protected override void OnModelCreating(ModelBuilder builder) {
base.OnModelCreating(builder);
}
}
E le seguenti entità:
public class User : IdentityUser<Int32, UserClaim, UserRole, UserLogin> { }
public class Role : IdentityRole<Int32, UserRole, RoleClaim> { }
public class RoleClaim : IdentityRoleClaim<Int32> { }
public class UserClaim : IdentityUserClaim<Int32> { }
public class UserLogin : IdentityUserLogin<Int32> { }
public class UserRole : IdentityUserRole<Int32> { }
public class UserToken : IdentityUserToken<Int32> { }
All'avvio ho il seguente:
services.AddDbContext<Context>(x => x.UseSqlServer(connectionString, y => y.MigrationsHistoryTable("__Migrations")));
services
.AddIdentity<User, Role>()
.AddEntityFrameworkStores<Context, Int32>()
.AddDefaultTokenProviders();
Quando dotnet ef migrations add "FirstMigration"
ottengo il seguente errore:
Si è verificato un errore durante il richiamo del metodo 'ConfigureServices' sulla classe di avvio 'WebProject.Startup'. Considerare l'utilizzo di IDbContextFactory per sovrascrivere l'inizializzazione di DbContext in fase di progettazione. Errore: GenericArguments [0], 'WebProject.User', su 'Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore`4 [TUser, TRole, TContext, TKey]' viola il vincolo del tipo 'TUser'.
Come risolvere questo problema?
Mi scuso per aver postato una risposta parziale, ma sarà utile per molti ...
Si è verificato un errore durante il richiamo del metodo "ConfigureServices" sulla classe di avvio
Il tuo metodo Startup.ConfigureServices(...)
viene chiamato e lancia un'eccezione. L'eccezione probabilmente si verifica perché quando si esegue dotnet ef
il punto di ingresso dell'applicazione non è Program.Main()
come al solito.
Provare
dotnet ef migrations add "FirstMigration" --verbose
Ciò stamperà il messaggio di errore e sarai in grado di capire meglio il problema.