Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用EF WPF创建登录页面_C#_Wpf_Entity Framework_Data Binding_Mvvm - Fatal编程技术网

C# 使用EF WPF创建登录页面

C# 使用EF WPF创建登录页面,c#,wpf,entity-framework,data-binding,mvvm,C#,Wpf,Entity Framework,Data Binding,Mvvm,我正在创建一个登录页面,使用户能够使用WPFMVVM应用程序。到目前为止,我使用的是实体框架模型,连接到SQL数据库 我有一个表,其中包含一些用户详细信息,如用户名、密码、确认密码电子邮件和用户角色 到目前为止,我已经创建了一个视图,该视图已绑定到我的viewmodel中的一些属性(用户名和密码) 我还有一个注册页面,允许用户拥有用户凭证(还有一些验证,因此只有一个用户有一个名称,不能复制) 显然,与ASP.NET相比,您可以使用身份验证并以这种方式创建用户。我一直在遵循一些不同的链接如何创建一

我正在创建一个登录页面,使用户能够使用
WPF
MVVM
应用程序。到目前为止,我使用的是
实体框架模型
,连接到
SQL数据库

我有一个表,其中包含一些用户详细信息,如用户名、密码、确认密码电子邮件和用户角色

到目前为止,我已经创建了一个视图,该视图已绑定到我的viewmodel中的一些属性(用户名和密码)

我还有一个注册页面,允许用户拥有用户凭证(还有一些验证,因此只有一个用户有一个名称,不能复制)

显然,与ASP.NET相比,您可以使用身份验证并以这种方式创建用户。我一直在遵循一些不同的链接如何创建一个登录页面,但没有一个完全是我想要的

但是,我不太确定我所做的是正确的,在这个意义上,我如何匹配来自数据库的结果以允许用户登录

这就是我到目前为止所做的

public void CheckLogin()
{
     var user = context.Users.Where(i => i.UserID == this.UserID).FirstOrDefault();

     if (user != null )
     {
         MessageBox.Show("Unable to Login, incorrect credentials.");

     }
     else if (this.Username == user.Username || this.Password == user.Password)
     {
         MessageBox.Show("Successfully Logged in, " + user.Username + "");
     }
     else
     {
         MessageBox.Show("Unable to Login, incorrect credentials.");
     }
}

private ICommand showLoginCommand;
public ICommand ShowLoginCommand
{
    get
    {
        if (this.showLoginCommand == null)
        {
            this.showLoginCommand = new CommandBase(i => this.CheckLogin(), null);
        }
        return this.showLoginCommand;
    }
}
XAML


但当输入详细信息时,它似乎不起作用。有人能帮我创建一个EF语句来检查数据库中的用户,并将其与从登录页面输入的用户名和密码相匹配吗


感谢高级版。

我认为代码中的if语句有些地方。当我看代码时,它应该更像:

if (user == null)
 {
     MessageBox.Show("Unable to Login, incorrect credentials.");

 }
 else if (this.Username == user.Username && this.Password == user.Password)
 {
     MessageBox.Show("Successfully Logged in, " + user.Username + "");
 }
 else
 {
     MessageBox.Show("Unable to Login, incorrect credentials.");
 }

如果用户不存在,则显示消息,用户名和密码必须相等。

感谢@NRonald的回复,我在我的问题之前也尝试过了,但似乎仍然不起作用。它仍然中断到else语句,并且找不到已经在数据库中的用户。该用户是使用UserID从数据库中收集的。可能是与用户名和密码不对应。同时检查数值是否有大小写差异。谢谢回复。我推测这与ID有关,但不确定应该如何通过其用户ID查找用户名。如果只输入用户名和密码,它应该更像:
var user=context.Users.Where(i=>i.username==this.username.SingleOrDefault()
然后检查密码输入是否正确。您好,这似乎可以更好地查询用户名,非常感谢!但是由于我在虚拟机中使用代码,当它匹配时,它不匹配;不要关窗户。
if (user == null)
 {
     MessageBox.Show("Unable to Login, incorrect credentials.");

 }
 else if (this.Username == user.Username && this.Password == user.Password)
 {
     MessageBox.Show("Successfully Logged in, " + user.Username + "");
 }
 else
 {
     MessageBox.Show("Unable to Login, incorrect credentials.");
 }