2014-06-21 12 views
38

Ho ricevuto un errore utilizzando l'identità ASP.NET nella mia app.Identità ASP.NET - Non sono supportati più set di oggetti per tipo

Più insiemi di oggetti per tipo non sono supportati. I set di oggetti 'Identity Users' e 'Users' possono entrambi contenere istanze di tipo 'Recommendation Platform.Models.ApplicationUser'.

Ho visto alcune domande su questo errore in StackOverflow. Tutti indicano su due oggetti DbSet dello stesso tipo. Ma nel mio DbContext non ci sono gli stessi tipi di DbSet. Eccezione nel gettato sul FindAsync metodo(), durante il loggin in.

if (ModelState.IsValid) 
    var user = await UserManager.FindAsync(model.UserName, model.Password); 
    if (user != null && user.IsConfirmed) 
    { 

Il problema è che non ho due DbSets dello stesso tipo. I miei contesti che sembrano:

public class ApplicationDbContext : IdentityDbContext<ApplicationUser> 
{ 
    public ApplicationDbContext() 
     : base("DefaultConnection") 
    { 
    } 

    public System.Data.Entity.DbSet<RecommendationPlatform.Models.ApplicationUser> IdentityUsers { get; set; } 

} 

e

public class RecContext : DbContext 
{ 
    public RecContext() 
     : base("RecConnection") 
    { 
     Database.SetInitializer<RecContext>(new DropCreateDatabaseIfModelChanges<RecContext>()); 
    } 

    public DbSet<Recommendation> Recommendations { get; set; } 
    public DbSet<Geolocation> Geolocations { get; set; } 
    public DbSet<Faq> Faqs { get; set; } 
    public DbSet<IndexText> IndexTexts { get; set; } 
} 

Che cosa potrebbe causare questo problema? Forse qualcosa connesso con funzionalità di identità ASP.NET integrate? Ad ogni modo, qual è il tipo di utenti? Non ce l'ho nella mia app ...

risposta

81

Si dispone di due DbSet s` dello stesso tipo.

IdentityDbContext<T> sé contiene Users proprietà dichiarata come:

public DbSet<T> Users { get; set; } 

Stai dichiarando seconda della tua classe.

+0

Grazie Marcin. :) A proposito - blog molto carino. Saluta. – magos

+0

dov'è questo ??? –

+9

Guardate all'interno IdentityModel.cs, troverete ApplicationDbContext public class: IdentityDbContext All'interno di questo contesto, a volte VS aggiunge DbSet ApplicationUsers –

57

recensione questo file "ApplicationDbContext.cs", rimuovere la riga, generata automaticamente dal patibolo scorso, dovrebbe essere simile a questo:

public System.Data.Entity.DbSet<Manager.Models.ApplicationUser> IdentityUsers { get; set; } 
+1

Grazie .. questo è quello che mi è successo – lawphotog

+3

Anch'io. F ..... F ...... S. –

+0

Grazie, ora so che il colpevole è l'impalcatura che il nuovo wizard del controller ha appena fatto. – VivekDev

Problemi correlati