You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Entity Framework报错:不支持同类型多对象集,ApplicationUsers与Users均包含同类型实例

报错原因
  • 你继承的IdentityDbContext<ApplicationUser>父类已经内置了名为Users的DbSet<ApplicationUser>对象集,你在自定义的ApplicationDbContext子类中又额外声明了名为ApplicationUsers的同类型DbSet,导致Entity Framework识别到同一实体类型对应两个不同的对象集,触发该报错。
标准解决方案

直接删除你在ApplicationDbContext类末尾手动添加的这行代码即可:

public System.Data.Entity.DbSet<E_Commerce.Models.ApplicationUser> ApplicationUsers { get; set; }

删除后你可以直接使用父类内置的Users属性操作ApplicationUser类型的数据,示例:

// 查询所有用户
var userList = await dbContext.Users.ToListAsync();
// 按ID查询指定用户
var user = await dbContext.Users.FirstOrDefaultAsync(u => u.Id == userId);
可选自定义配置

如果你确实需要使用ApplicationUsers作为用户集合的属性名,可以按如下方式修改避免冲突:

  1. 替换原有属性声明,用new关键字隐藏父类的Users属性:
public new DbSet<ApplicationUser> ApplicationUsers { get; set; }
  1. 重写OnModelCreating方法,忽略父类内置的Users集合映射:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    base.OnModelCreating(modelBuilder);
    modelBuilder.Entity<ApplicationDbContext>().Ignore(c => c.Users);
    modelBuilder.Entity<ApplicationUser>().ToTable("AspNetUsers");
}

内容的提问来源于stack exchange,提问作者sulaiman Farooqi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 17:36:03