通过sub-class的id获取实体(多对多关系)
Get entity by id of sub-class (many-to-many relationship)
实体Topic
和Users
具有多对多关系。 "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));
}
实体Topic
和Users
具有多对多关系。 "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));
}