一尘不染

ASP.NET身份-每个类型不支持多个对象集

c#

我在应用程序中使用ASP.NET Identity遇到错误。

每个类型不支持多个对象集。对象集“ Identity Users”和“ Users”都可以包含“ Recommendation
Platform.Models.ApplicationUser”类型的实例。

我在StackOverflow中看到了有关此错误的一些问题。全部DbSet在相同类型的两个对象上指示。但是在我DbContext里面没有相同类型的DbSetsFindAsync()登录期间在方法上引发异常。

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类型?我的应用程序中没有它…


阅读 396

收藏
2020-05-19

共1个答案

一尘不染

您确实有两个DbSet相同类型的。

IdentityDbContext<T>本身包含Users声明为的属性:

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

您要宣布班级第二名。

2020-05-19