【问题标题】:C# - Only primitive types or enumeration types are supported in this contextC# - 在此上下文中仅支持原始类型或枚举类型
【发布时间】:2020-09-02 17:31:42
【问题描述】:

我正在尝试创建一个连接到 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");
}

【问题讨论】:

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

标签: c# sqlexception


【解决方案1】:

您正在尝试将用户名与TextBox 进行比较。您想将它与字符串进行比较,因此您几乎肯定想再次使用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("Login successful");
    }
    else
    {
        // Note: message updated because we don't know whether the user
        // wasn't found, or they didn't have the right password
        MessageBox.Show("Incorrect user name or password");
    }
}

或者更简单:

string user = usertext.Text;
string password = passtest.Text;

if (user != "" && password != "")
{
    var userEntity = db.Admins.SingleOrDefault(a => a.username == user);
    if (userEntity is object && userEntity.password == password)
    {
        MessageBox.Show("Login successful");
    }
    else
    {
        MessageBox.Show("Incorrect user name or password");
    }
}

另请注意,您似乎是以纯文本形式存储密码,这是非常弱安全性。我强烈建议您使用开箱即用的身份系统,而不是像这样滚动自己的身份系统。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多