使用实体框架创建登录窗体



我用实体框架在 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;
    }

最新更新