为什么我尝试从具有多对多关系的表中获取数据时出现异常

Why I get exception when I try to fetch data from tables that has many to many relationship

我使用EF6数据库第一个identity 2.0表。 我尝试获取用户和角色记录并为此目的使用导航属性。

这是我在 VisualStudio 中的数据库方案:

这是我来自 SQLManagmentStudio 的原始数据库方案:

这里是实体:

    public virtual DbSet<ApplicationGroupRole> ApplicationGroupRoles { get; set; }
    public virtual DbSet<ApplicationGroup> ApplicationGroups { get; set; }
    public virtual DbSet<ApplicationUserGroup> ApplicationUserGroups { get; set; }
    public virtual DbSet<AspNetRole> AspNetRoles { get; set; }
    public virtual DbSet<AspNetUserClaim> AspNetUserClaims { get; set; }
    public virtual DbSet<AspNetUserLogin> AspNetUserLogins { get; set; }
    public virtual DbSet<AspNetUser> AspNetUsers { get; set; }
    

在这一行:

var query = context.AspNetUsers.SelectMany(c=>c.AspNetRoles).ToList();  

我收到这个错误:

Invalid object name 'dbo.AspNetUserAspNetRoles'.

知道为什么会出现此错误吗?

听起来您正试图从数据库中不存在的 table 获取数据。 检查 table“dbo.AspNetUserAspNetRoles”是否存在于您的数据库中。

This is a similar question on Whosebug

再次查看您的问题时,您似乎正试图在 AspNetUser 和 AspNetRoles 之间创建多对多关系 创建另一个 POCO class link 多对多关系

public class AspNetUserAspnetRole{
public int AspNetRolesId {get;set;}
public int AspNetUserId {get;set;}
public AspNetRoles AspNetRoles {get;set;}
public AspNetUser AspNetUser {get;set;}

}

将此 class 添加到数据库上下文并添加迁移并更新数据库然后您的查询应该可以工作