C#-在此上下文中仅支持基元类型或枚举类型

C#-在此上下文中仅支持基元类型或枚举类型,c#,sqlexception,C#,Sqlexception,我正在尝试将登录页连接到sql server,但每当我输入用户名和密码时,下一行代码都会出现 var user = db.Admins.Where(a => a.username.Equals(usertext)).SingleOrDefault(); 引发下一个异常: System.NotSupportedException:'无法创建的常量值 键入“System.Windows.Forms.TextBox”。只有基元类型或 在此上下文中支持枚举类型。' 我应该如何解决它 以下是登录名

我正在尝试将登录页连接到sql server,但每当我输入用户名和密码时,下一行代码都会出现

var user = db.Admins.Where(a => a.username.Equals(usertext)).SingleOrDefault();
引发下一个异常:

System.NotSupportedException:'无法创建的常量值 键入“System.Windows.Forms.TextBox”。只有基元类型或 在此上下文中支持枚举类型。'

我应该如何解决它

以下是登录名的代码:

AirlineEntities db = new AirlineEntities();
if (usertext.Text != string.Empty && passtext.Text != string.Empty) 
{
    var user = db.Admins.Where(a => a.username.Equals(usertext)).SingleOrDefault();
    if (user != null)
    {
        user.password.Equals(passtext);
        MessageBox.Show("Login successful");
    }
    else
    {
        MessageBox.Show("Incorrect password");
    }
}
else
{
    MessageBox.Show("Enter Username and Password please");
}

您试图将用户名与
文本框
进行比较。您希望将其与字符串进行比较,因此几乎可以肯定您希望再次使用
Text
属性。此外,您当前正在调用
Equals
获取密码,但忽略了结果。我猜你想要的是:

if(usertext.Text!=string.Empty&&passtext.Text!=string.Empty)
{
var user=db.Admins.Where(a=>a.username.Equals(usertext.Text)).SingleOrDefault();
if(user!=null&&user.password.Equals(passtext.Text))
{
MessageBox.Show(“登录成功”);
}
其他的
{
//注意:消息已更新,因为我们不知道用户是否
//找不到,或者他们没有正确的密码
MessageBox.Show(“不正确的用户名或密码”);
}
}
或者更简单:

string user=usertext.Text;
字符串密码=passtest.Text;
如果(用户!=“”&密码!=“”)
{
var userEntity=db.Admins.SingleOrDefault(a=>a.username==user);
if(userEntity是对象&&userEntity.password==密码)
{
MessageBox.Show(“登录成功”);
}
其他的
{
MessageBox.Show(“不正确的用户名或密码”);
}
}

还要注意的是,它看起来像是以明文形式存储密码,这是非常弱的安全性。我强烈建议您使用现成的身份识别系统,而不是像这样滚动自己的身份识别系统。

您试图将用户名与
文本框进行比较。您希望将其与字符串进行比较,因此几乎可以肯定您希望再次使用
Text
属性。此外,您当前正在调用
Equals
获取密码,但忽略了结果。我猜你想要的是:

if(usertext.Text!=string.Empty&&passtext.Text!=string.Empty)
{
var user=db.Admins.Where(a=>a.username.Equals(usertext.Text)).SingleOrDefault();
if(user!=null&&user.password.Equals(passtext.Text))
{
MessageBox.Show(“登录成功”);
}
其他的
{
//注意:消息已更新,因为我们不知道用户是否
//找不到,或者他们没有正确的密码
MessageBox.Show(“不正确的用户名或密码”);
}
}
或者更简单:

string user=usertext.Text;
字符串密码=passtest.Text;
如果(用户!=“”&密码!=“”)
{
var userEntity=db.Admins.SingleOrDefault(a=>a.username==user);
if(userEntity是对象&&userEntity.password==密码)
{
MessageBox.Show(“登录成功”);
}
其他的
{
MessageBox.Show(“不正确的用户名或密码”);
}
}

还要注意的是,它看起来像是以明文形式存储密码,这是非常弱的安全性。我强烈建议您使用现成的身份系统,而不是像这样滚动自己的身份系统。

var user=db.Admins.Where(a=>a.username.Equals(usertext.Text)).SingleOrDefault()
var user=db.Admins.Where(a=>a.username.Equals(usertext.Text)).SingleOrDefault()