gpt4 book ai didi

c# - MVC EF 一直在寻找昂贵的 userId

转载 作者:太空宇宙 更新时间:2023-11-03 10:50:25 24 4
gpt4 key购买 nike

也许这是我的代码中的一些错误逻辑,但我在 C# 中首先拥有最新的 MVC EF 代码。当我查看 sql 分析器和昂贵的查询时,我注意到它正在获取这样的查询:

exec sp_executesql N'SELECT [UserId] FROM [Users] WHERE (UPPER([Email]) = @0)',
N'@0 nvarchar(71)',@0=N'myRegisteredEmail@someDomain.com'

这是我频繁请求 WebSecurity.CurrentUserId 造成的吗?我以为只需要一次就可以了? (但我在一页中看到多个调用)。也许对 WebSecurity.CurrentUserId 的每个请求也会导致系统从数据库中获取 ID,将 Email 保持为用户身份识别的主要情况(我更希望不是'不是这样)吗?

我有一些外键是用户的查询,但同样,Users 表的主键是 UserId,而不是电子邮件。为什么它会继续尝试通过电子邮件获取它?所以我也打消了这个念头。

因此我无法找出它会多次获取的原因。

最后,这些查询最多需要四分之一秒。添加几次,页面加载速度很慢。

最佳答案

如果您拥有最新的 MVC + EF,这是否意味着您也在使用最新的身份框架 Microsoft.AspNet.Identity?

如果是这样,您可以像这样获取您的用户 ID:

User.Identity.GetUserId();

...其中 User 是 Controller 、HttpContext 等上的 IPrincipal。我很确定您必须使用 OWIN 代替 FormsAuthentication 才能获得此信息。

这不会每次都访问数据库,因为用户 ID 存储为声明; OWIN IPrincipals 是 ClaimsPrincipals。

关于c# - MVC EF 一直在寻找昂贵的 userId,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21618776/

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