通过子类的id获取实体(多对多关系)

时间:2016-02-05 20:16:11

标签: c# entity-framework many-to-many

实体TopicUsers具有多对多关系。中间的"表格#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()

1 个答案:

答案 0 :(得分:2)

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