gpt4 book ai didi

c# - 为什么我的对象被处置?

转载 作者:行者123 更新时间:2023-11-30 20:28:02 26 4
gpt4 key购买 nike

我正在尝试在 asp.net 框架中使用 C# 使用 LINQ 访问 SQL 服务器。我正在网页上写一个简单的登录表单。以下是我的 C# 代码,用于检查它是否在数据库中。

public int getUserId(string un, string pw)
{
IEnumerable<int> query;
using (var context = new IngredientsLinqDataContext())
{
query = from c in context.USERs
where c.Username == un && c.Password == pw
select c.UserID;
}
if(query.Count() >= 1)
{
return query.Min();//a very serious kludge. Need to fix this
}
else { return -1; }

}
}

检查查询计数是否大于或等于 1 时抛出对象处置异常。我原以为,由于查询是在花括号之外声明的,所以这不应该是范围问题。另外,什么是解决问题的好方法?它应该只返回一个整数,而不是一个整数列表。我怎么能这样对待它?谢谢!

最佳答案

改变

query = from c in context.USERs
where c.Username == un && c.Password == pw
select c.UserID;

query = (from c in context.USERs
where c.Username == un && c.Password == pw
select c.UserID).ToList();

LINQ 使用延迟执行,因此您的查询不会立即求值,而是仅在 query.Count() 时求值。 context 在那一刻已经被释放了。这就是您收到错误的原因。

关于c# - 为什么我的对象被处置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47899182/

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