gpt4 book ai didi

c# - 静态 DBContext 返回不正确的值

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

我遇到这样一种情况,其中具有静态 DBContext 成员的帮助程序类使用与非静态 DBContext 变量不同的值填充模型的 bool 字段。后者正在获取正确的变量。

在这种情况下,我在数据库中有一个具有指定用户名的用户,其中“isAdmin”设置为 true。静态成员返回一个带有 isAdmin = false 的 User 对象,另一个成员按预期返回 true。见下文。

有人知道为什么会这样吗?

这是模型:

public class User
{
[Required]
public int UserID { get; set; }
[Required]
public string username { get; set; }
[Required]
public bool isAdmin { get; set; }
}

有问题的助手类如下所示:

public static class UserAuthHelper
{
private static SSBPDContext db = new SSBPDContext();
public static User getUser(string username, string plaintextPassword)
{
var users = db.Users.Where(u => u.username.Equals(username));

User user = (from u in db.Users
where u.username.Equals(username)
select u).FirstOrDefault();
//this user has isAdmin = false
User otherUser;
using (var db2 = new SSBPDContext())
{
otherUser = (from u in db2.Users
where u.username.Equals(username)
select u).FirstOrDefault();
//otherUser has isAdmin = true
}

}
}

最佳答案

你的上下文不应该是静态的。每个请求创建一个。依赖注入(inject)可以帮助您解决这个问题(这是一个单独的问题/答案)

上下文不是线程安全的,因此甚至不值得在这里找出问题。

关于c# - 静态 DBContext 返回不正确的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9355776/

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