与 entity framework 核心 5 的多对多关系中的内部连接问题
problem with inner join in many-to-many relationships with entity framework core 5
我想发起一个跨多对多相关的两个 table 的查询,并且在 entity framework 核心 5 中,没有必要创建 c# class中间 table。因此,对于 include,我使用正确的左连接启动查询,但我需要启动内部连接,但我不能,因为我没有中间 table 的 c# class。不用创建中间体 table 的 c# class 怎么可能做到这一点?
非常感谢
您不需要中间实体即可在 LINQ to Entities 查询中实现内部联接。你只需要 SelectMany
没有 DefaultIfEmpty()
.
例如,使用文档 Many-to-many 部分的示例模型:
public class Post
{
public int PostId { get; set; }
public string Title { get; set; }
public string Content { get; set; }
public ICollection<Tag> Tags { get; set; }
}
public class Tag
{
public string TagId { get; set; }
public ICollection<Post> Posts { get; set; }
}
以下将生成内部联接:
var query = from post in db.Posts
from tag in post.Tags
select new { post, tag };
或使用方法语法
var query = db.Posts
.SelectMany(post => post.Tags, (post, tag) => new { post, tag });
我想发起一个跨多对多相关的两个 table 的查询,并且在 entity framework 核心 5 中,没有必要创建 c# class中间 table。因此,对于 include,我使用正确的左连接启动查询,但我需要启动内部连接,但我不能,因为我没有中间 table 的 c# class。不用创建中间体 table 的 c# class 怎么可能做到这一点?
非常感谢
您不需要中间实体即可在 LINQ to Entities 查询中实现内部联接。你只需要 SelectMany
没有 DefaultIfEmpty()
.
例如,使用文档 Many-to-many 部分的示例模型:
public class Post
{
public int PostId { get; set; }
public string Title { get; set; }
public string Content { get; set; }
public ICollection<Tag> Tags { get; set; }
}
public class Tag
{
public string TagId { get; set; }
public ICollection<Post> Posts { get; set; }
}
以下将生成内部联接:
var query = from post in db.Posts
from tag in post.Tags
select new { post, tag };
或使用方法语法
var query = db.Posts
.SelectMany(post => post.Tags, (post, tag) => new { post, tag });