【问题标题】:Can't use my joining table from DbContext无法使用来自 DbContext 的加入表
【发布时间】:2022-07-23 02:54:41
【问题描述】:

我有不同表的数据库。但是我无法访问某些表,我很好奇为什么?例如,数据库中有 Projects 表和 Users 表,我需要按 Id 获取特定 Project 中所有用户的列表。这些表有多对多的关系,所以有 ProjectId 和 UserId 的连接表。借助数据库中的此连接表,使用一些 Join 从表 Users 中获取我需要的用户是逻辑。但是,当我的 DbContext 没有加入表时,如何进行加入?如何使用 DbContext 访问连接表,或者有一些不同的方法可以通过项目 ID 获取用户列表?

【问题讨论】:

    标签: asp.net-mvc entity-framework-core


    【解决方案1】:

    ProjectUser - 正在加入表,用于链接两个表。此表必须(通常)具有 Collection 才能访问此多对多数据。 因此,您将拥有该项目的用户集合。并从您的票证中进行用户过滤(来自图像的示例)。 是的,存在几种不同的方式 - 使用 ef fluent、属性或 dbcontext 设置。最好在您的应用程序中找到多对多设置的完整指南。

    【讨论】:

    • 谢谢。我认为我理解,我更有可能在正确完成项目方面遇到问题,因为正如你所说,在项目模型中我有用户和票证的集合,但是当我从数据库获取项目时,项目除了用户之外的所有信息和收藏中的门票。所以,这就是为什么我认为我应该重写我的存储库以将票证和用户与项目分开......
    【解决方案2】:

    如果有人有类似的问题,这里有一个简单的方法来使用模型中集合中的所有数据

    var project = _db.Projects.Include(x => x.Tickets).ThenInclude(y => y.Users).SingleOrDefault(p => p.Id == id);
    

    所以在那之后你将拥有你的模型和你需要的集合中的所有数据

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-27
      • 2012-09-03
      相关资源
      最近更新 更多