私は、IdプロパティとUserプロパティを持つPostエンティティを持っています。 ユーザーはIdentityUserです。 自分のエンティティにUserIdプロパティを持っていないので、必要ありません。EFコアの主キーと外部キーの状態を確認する方法はありますか?
投稿が現在のユーザーに最適な方法で属していることを確認するにはどうすればよいですか? 私はこの
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.");
について考えた。しかし、それは動作しません。
これは、「最適」な方法は、DB(var post = await context.Posts.SingleAsync(x => x.Id = postId);
からPostオブジェクトを読み、それにUser
をチェックすることです、あなたのケースでは二番目のオプション
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
あなたのPost and User Modelsコードを教えてもらえますか? – theMohammedA