如何在 EF Core 中调用 ThenInclude 两次? [英] How to call ThenInclude twice in EF Core?
问题描述
我正在创建一个 ASP.NET Core API 应用程序,并依赖于 EF Core.我有这样定义的实体:
I'm creating an ASP.NET Core API app, and relying on EF Core. I have entities defined like this:
public class AppUser : IdentityUser
{
public string FirstName { get; set; }
public string LastName { get; set; }
[InverseProperty(nameof(Post.Author))]
public ICollection<Post> Posts { get; set; } = new List<Post>();
}
public class Post
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public string AuthorId { get; set; }
[ForeignKey("AuthorId")]
public virtual AppUser Author { get; set; }
[InverseProperty(nameof(Like.Post))]
public ICollection<Like> Likes { get; set; } = new List<Like>();
[InverseProperty(nameof(Comment.Post))]
public ICollection<Comment> Comments { get; set; } = new List<Comment>();
}
其中 Comment
和 Like
是其他一些实体.请注意,为简洁起见,我简化了实体.然后,我想获取用户的 Posts
,但还要包括帖子获得的 Likes
和 Comments
.所以,我做了这样的事情:
Where Comment
and Like
are some other entities. Please note that I have simplified the entities for brevity. Then, I want to get the Posts
of a user, but also include the Likes
and Comments
that a post has gotten. So, I did something like this:
return _context.Users
.Include(u => u.Location)
.Include(u => u.Posts)
.ThenInclude(p => p.Comments)
.ThenInclude(c => c.Owner)
.Include(u => u.Posts)
.ThenInclude(p => p.Likes)
.ThenInclude(l => l.Giver)
.Where(u => u.Id == userId)
.FirstOrDefault();
现在,这工作正常,但正如你所看到的,我调用了 .Include(u = u.Posts)
两次.有没有办法在同一个属性上调用 ThenInclude
两次,而不实际编写 Include
语句两次?
Now, this works fine, but as you can see I'm calling .Include(u = u.Posts)
twice. Is there a way to call ThenInclude
twice on same property, without actually writing the Include
statement also twice?
推荐答案
您不能将 ThenInclude
与多个导航属性一起使用.你必须有Include
.
You cannot use ThenInclude
with multiple navigation properties. You have to have Include
.
这是为此打开的错误.
这篇关于如何在 EF Core 中调用 ThenInclude 两次?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!