【发布时间】:2016-12-21 21:59:30
【问题描述】:
我有一个带有 Id 和 User 属性的 Post 实体。 用户是身份用户。 我的实体上没有 UserId 属性,因为我不需要它。
如何以最佳方式检查帖子是否属于当前用户? 我想过这个
var currentUser = await userManager.GetUserAsync(httpAccessor.HttpContext.User);
if (!await context.Posts.FromSql(
@"SELECT TOP 1 UserId
FROM Posts
WHERE Id = {0}", postId).Any(Id => Id == currentUser.Id))
throw new InvalidOperationException("Post does not belong to current user.");
或者这个
if (!await context.Posts.AnyAsync(p => p.Id == post.Id && p.User.Id == currentUser.Id))
throw new InvalidOperationException("Post does not belong to current user.");
但它不起作用。
这是从第二个选项生成的 SQL
SELECT CASE
WHEN EXISTS (
SELECT 1
FROM [Posts] AS [p]
INNER JOIN [AspNetUsers] AS [p.User] ON [p].[UserId] = [p.User].[Id]
WHERE ([p].[Id] = @__post_Id_0) AND ([p.User].[Id] = @__currentUser_Id_1))
THEN CAST(1 AS BIT) ELSE CAST(0 AS BIT)
END
【问题讨论】:
-
你能告诉我们你的帖子和用户模型代码吗?