C# 登录问题

C# 登录问题,c#,asp.net-mvc,asp.net-mvc-4,C#,Asp.net Mvc,Asp.net Mvc 4,苦苦挣扎的新手:( 实体未获取用户 登录控制器 [HttpPost] public ActionResult LoginForm(string user_NA, string user_pwd) { User u = new User(); u.LogIn(user_NA, user_pwd); return RedirectToAction("Index"); } 登录模型 public bool LogIn(string userID, string passwor

苦苦挣扎的新手:(

实体未获取用户

登录控制器

[HttpPost]
public ActionResult LoginForm(string user_NA, string user_pwd)
{
    User u = new User();
    u.LogIn(user_NA, user_pwd);
    return RedirectToAction("Index");
}
登录模型

public bool LogIn(string userID, string password)
{
    using (Entity.xcLEntities en = new xcLEntities())
    {
        try
        {
            var user = en.Users.SingleOrDefault(x => x.LoginID == userID && x.PasswordHash == this.SetPassword(password));
            if (user != null && password != null)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
        catch (Exception e)
        {
            throw e;
        }

    }
}
特例鞋

An exception of type 'System.NotSupportedException' occurred in AML.Web.dll but was not handled in user code

Additional information: LINQ to Entities does not recognize the method 'System.String SetPassword(System.String)' method, and this method cannot be translated into a store expression.

关于您的异常,您可以尝试在
SingleOrDefault
方法之外获取相应的哈希:

public bool LogIn(string userID, string password)
{
    using (Entity.AMLEntities en = new AMLEntities())
    {
        try
        {
            string hashed = this.SetPassword(password);
            var user = en.Users.SingleOrDefault(x => x.LoginID == userID && x.PasswordHash == hashed);
            if (user != null && password != null)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
        catch (Exception e)
        {
            throw e;
        }

    }
}

编辑:如Rezoan在评论中所建议的,可以通过阅读找到更多信息。

关于您的异常,您可以尝试在
SingleOrDefault
方法之外获取相应的哈希:

public bool LogIn(string userID, string password)
{
    using (Entity.AMLEntities en = new AMLEntities())
    {
        try
        {
            string hashed = this.SetPassword(password);
            var user = en.Users.SingleOrDefault(x => x.LoginID == userID && x.PasswordHash == hashed);
            if (user != null && password != null)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
        catch (Exception e)
        {
            throw e;
        }

    }
}

编辑:如Rezoan在评论中所建议的,可以通过阅读找到更多信息。

关于您的异常,您可以尝试在
SingleOrDefault
方法之外获取相应的哈希:

public bool LogIn(string userID, string password)
{
    using (Entity.AMLEntities en = new AMLEntities())
    {
        try
        {
            string hashed = this.SetPassword(password);
            var user = en.Users.SingleOrDefault(x => x.LoginID == userID && x.PasswordHash == hashed);
            if (user != null && password != null)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
        catch (Exception e)
        {
            throw e;
        }

    }
}

编辑:如Rezoan在评论中所建议的,可以通过阅读找到更多信息。

关于您的异常,您可以尝试在
SingleOrDefault
方法之外获取相应的哈希:

public bool LogIn(string userID, string password)
{
    using (Entity.AMLEntities en = new AMLEntities())
    {
        try
        {
            string hashed = this.SetPassword(password);
            var user = en.Users.SingleOrDefault(x => x.LoginID == userID && x.PasswordHash == hashed);
            if (user != null && password != null)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
        catch (Exception e)
        {
            throw e;
        }

    }
}


编辑:根据Rezoan在评论中的建议,可以通过阅读找到更多信息。

您应该将SetPassword方法的结果存储在本地变量中,并在lambda表达式中使用该变量。例外情况是明确说明SetPassword方法在数据库端不可用。

您应该将SetPassword方法的结果存储在本地变量表中,并在lambda表达式中使用该变量。异常情况清楚地表明SetPassword方法在db端不可用。

您应该将SetPassword方法的结果存储在本地变量表中,并在lambda表达式中使用该变量。异常情况清楚地显示出来声明setpassword方法在db端不可用。

您应该将setpassword方法的结果存储在本地变量中,并在lambda表达式中使用变量。例外情况是明确声明setpassword方法在db端不可用。

我应该如何使用ID获取用户?您确定用户有吗?如果你得到所有用户,你看到你正在测试的
LoginID
用户了吗?@AndreiV你是指实体用户吗?我可以在同一个应用程序中创建用户,没有问题。我应该如何使用ID获取用户?你确定用户在吗?如果你得到所有用户,你看到你正在测试的
LoginID
用户了吗测试?@AndreiV你是指实体一吗?我可以在同一个应用程序中创建用户而不会出现问题。我应该如何使用ID获取用户?你确定用户在那里吗?如果你获得了所有用户,你是否看到了使用
LoginID
进行测试的用户?@AndreiV你是指实体一吗?我可以在同一个应用程序中创建用户而不必担心问题。我应该如何使用ID获取用户?你确定用户在那里吗?如果你获取了所有用户,你是否看到正在测试的
LoginID
用户?@AndreiV你是指实体用户吗?我可以在同一个应用程序中创建用户,没有问题。谢谢……如果你告诉我为什么我的代码中不接受它,我将不胜感激:)我不是lambda表达式的专家,但这可能与以下事实有关:在lambda表达式中,有另一个“实例”,即关键字
this
不是指你的
用户
实例。也许有人可以提供更好的解释。@JRU实体框架实际上无法将C代码作为其查询的一部分来运行。请看《脱衣舞勇士》的答案,谢谢。。。如果您能告诉我为什么我的代码中不接受它,我将不胜感激:)我不是lambda表达式的专家,但这可能与lambda表达式中存在另一个“实例”有关,即关键字
this
不是指您的
用户
实例。也许有人可以提供更好的解释。@JRU实体框架实际上无法将C代码作为其查询的一部分来运行。请看《脱衣舞勇士》的答案,谢谢。。。如果您能告诉我为什么我的代码中不接受它,我将不胜感激:)我不是lambda表达式的专家,但这可能与lambda表达式中存在另一个“实例”有关,即关键字
this
不是指您的
用户
实例。也许有人可以提供更好的解释。@JRU实体框架实际上无法将C代码作为其查询的一部分来运行。请看《脱衣舞勇士》的答案,谢谢。。。如果您能告诉我为什么我的代码中不接受它,我将不胜感激:)我不是lambda表达式的专家,但这可能与lambda表达式中存在另一个“实例”有关,即关键字
this
不是指您的
用户
实例。也许有人可以提供更好的解释。@JRU实体框架实际上无法将C代码作为其查询的一部分来运行。请参阅StriplingWarrior on的答案