我在应用程序中使用ASP.NET Identity遇到错误。
每个类型不支持多个对象集。对象集“ Identity Users”和“ Users”都可以包含“ Recommendation Platform.Models.ApplicationUser”类型的实例。
我在StackOverflow中看到了有关此错误的一些问题。全部DbSet在相同类型的两个对象上指示。但是在我DbContext里面没有相同类型的DbSets。FindAsync()登录期间在方法上引发异常。
DbSet
DbContext
DbSets
FindAsync()
if (ModelState.IsValid) var user = await UserManager.FindAsync(model.UserName, model.Password); if (user != null && user.IsConfirmed) {
问题是我没有两个DbSets相同的类型。我的上下文如下所示:
public class ApplicationDbContext : IdentityDbContext<ApplicationUser> { public ApplicationDbContext() : base("DefaultConnection") { } public System.Data.Entity.DbSet<RecommendationPlatform.Models.ApplicationUser> IdentityUsers { get; set; } }
和
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; } }
是什么导致此问题?也许与内置的ASP.NET Identity功能有关?反正是什么Users类型?我的应用程序中没有它…
Users
您确实有两个DbSet相同类型的。
IdentityDbContext<T>本身包含Users声明为的属性:
IdentityDbContext<T>
public DbSet<T> Users { get; set; }
您要宣布班级第二名。