2014-06-21 8 views
38

Ich habe einen Fehler bei der Verwendung von ASP.NET Identity in meiner App.ASP.NET-Identität - Mehrere Objektsätze pro Typ werden nicht unterstützt

Mehrere Objektgruppen pro Typ werden nicht unterstützt. Die Objektsätze 'Identity Users' und 'Users' können beide Instanzen des Typs 'Recommendation Platform.Models.ApplicationUser' enthalten.

Ich habe ein paar Fragen zu diesem Fehler in Stackoverflow gesehen. Alle zeigen auf zwei DbSet-Objekte des gleichen Typs an. Aber in meinem DbContext gibt es nicht die gleichen Arten von DbSets. Ausnahme geworfen auf FindAsync() -Methode, während loggin in.

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

Das Problem ist, ich habe nicht zwei DbSets des gleichen Typs. Meine Contexts sieht wie folgt aus:

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

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

} 

und

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; } 
} 

Was könnte dieses Problem verursachen? Vielleicht etwas in Zusammenhang mit integrierten ASP.NET Identity-Funktionen? Wie auch immer, was ist der Benutzertyp? Ich habe es nicht in meiner App ...

Antwort

81

Sie haben zwei DbSet s des gleichen Typs.

IdentityDbContext<T> selbst enthält Users Eigenschaft deklariert als:

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

Sie zweite in Ihrer Klasse zu deklarieren.

+0

Sie Marcin danken. :) Übrigens - sehr schöner Blog. Grüße. – magos

+0

wo ist das ??? –

+9

Ansehen IdentityModel.cs, werden Sie public class ApplicationDbContext finden: IdentityDbContext Innerhalb dieses Kontexts, manchmal VS fügt DbSet Application –

57

Überprüfung dieser Datei „ApplicationDbContext.cs“, entfernen Sie die Zeile, automatisch von Gerüst zuletzt, sollte wie folgt sein:

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

Danke .. das ist, was mir passiert ist – lawphotog

+3

Ich auch. F ..... F ...... S. –

+0

Danke, jetzt weiß ich, der Schuldige ist das Gerüst, das der neue Controller-Assistent gerade jetzt gemacht hat. – VivekDev