实体Topic
和Users
具有多对多关系。中间的"表格#34;用于订阅功能,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()
。
答案 0 :(得分:2)
using (var ctx = new TestContext())
{
var isSubscribed = ctx.Topics.Any(topic => topic.ID == topicId
&& topic.Users.Any(user => user.Id == userId));
}