我用实体框架在 C# 中创建了一个简单的登录表单。我在调用query.SingleOrDefault
的 if 语句中不断收到此错误
Error CS0103 The name 'Query' does not exist in the current context rooster
我对此相对较新,如何解决此错误?
我的代码:
private void btnLogin_Click(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(txtEmail.Text))
{
// check voor invoeren van wachtwoord en email.
MessageBox.Show("Voer u email adres in!", "Message", MessageBoxButtons.OK, MessageBoxIcon.Warning);
txtEmail.Focus();
return;
}
try
{
using (roosterAppEntities db = new roosterAppEntities())
{
var query = from u in db.Users
where u.username == txtEmail.Text && u.password == txtPassword.Text
select u;
}
if (query.SingleOrDefault() != null)
{
MessageBox.Show("Succesvol ingelogd! ", "Message", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Message", MessageBoxButtons.OK, MessageBoxIcon.Error);
throw;
}
}
private void Form1_Load(object sender, EventArgs e)
{
}
}
您正在初始化USING()
中的变量query
。一旦您的代码释放了db
上下文,query
也会丢失。请在使用之外定义它。
这里SO是关于USING
的C#函数的一个非常好的问题,请看一下。
例:
try
{
IQueryable query = null;
using (roosterAppEntities db = new roosterAppEntities())
{
query = from u in db.Users
where u.username == txtEmail.Text && u.password == txtPassword.Text
select u;
}
if (query.SingleOrDefault() != null)
{
MessageBox.Show("Succesvol ingelogd! ", "Message", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Message", MessageBoxButtons.OK, MessageBoxIcon.Error);
throw;
}