gpt4 book ai didi

entity-framework - 如何在 Entity Framework DbContext 中获取用户 ID

转载 作者:行者123 更新时间:2023-12-05 02:16:36 25 4
gpt4 key购买 nike

我需要跟踪 net core 2.0 EF 中的数据库更改。一切正常,但我不知道如何在 DbContext 中获取 userId。我需要获取 UserId 以将更改分配给用户。我不能简单地运行 _userManager.GetUserId(HttpContext.User).ToString();。有什么建议么?预先感谢您的帮助。

最佳答案

Startup.csConfigureServices 方法中添加:

services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
services.AddEntityFrameworkSqlServer();

services.AddEntityFrameworkSqlServer() 位将服务解析器添加到您的上下文中,允许您在上下文中使用GetService 扩展方法。

然后,在您的上下文中,您可以:

var httpContextAccessor = this.GetService<IHttpContextAccessor>();

结果可能为空,特别是如果上下文未在 Web 应用程序中运行(即在迁移期间,控制台应用程序使用您的上下文等)。因此,您应该进行适当的空值检查。下面使用 C# 6 的 null 条件运算符:

var userId = httpContextAccessor?.HttpContext.User.FindFirstValue(ClaimTypes.NameIdentifier);

然后,userId 将具有当前登录用户的 ID 或为空。

关于entity-framework - 如何在 Entity Framework DbContext 中获取用户 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49363280/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com