通过sub-class的id获取实体(多对多关系)

Get entity by id of sub-class (many-to-many relationship)

实体TopicUsers具有多对多关系。 "table in the middle"用于订阅功能,一个User可以订阅多个Topic

我正在尝试检查 User 是否订阅了某些 Topic。如果返回 null,则表示 User 未订阅 Topic

这是结构:

Topic.Id = topicId
Topic.Users.FirstOrDefault().Id = userId

我试过这个:

context
.Topics
.Where(t => t.Id == topicId && t.Users.FirstOrDefault().Id == userId).FirstOrDefault();

问题是导致这部分的原因 t.Users.FirstOrDefault() 我认为...如果多个用户订阅了同一个 Topic,那么它只适用于一个 User。它必须检查所有 Topic.Users 而不仅仅是 FirstOrDefault().

using (var ctx = new TestContext())
{
    var isSubscribed = ctx.Topics.Any(topic => topic.ID == topicId 
                                       && topic.Users.Any(user => user.Id == userId));
}