Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.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
如何将SQL转换为LINQ?_Sql_Asp.net Mvc_Linq - Fatal编程技术网

如何将SQL转换为LINQ?

如何将SQL转换为LINQ?,sql,asp.net-mvc,linq,Sql,Asp.net Mvc,Linq,这是我在MVC4模型中的有效用户登录代码 我正在尝试将SQL命令转换为LINQ 如何将其转换为LINQ方式 public bool IsValid(string _username, string _password) { using (var cn = new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename" + @"='C:\Tutorials\1 - Creating a custom us

这是我在MVC4模型中的有效用户登录代码

我正在尝试将SQL命令转换为LINQ

如何将其转换为LINQ方式

public bool IsValid(string _username, string _password)
{
    using (var cn = new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename" + 
        @"='C:\Tutorials\1 - Creating a custom user login form\Creating " + 
        @"a custom user login form\App_Data\Database1.mdf';Integrated Security=True")) 
    {
        string _sql = @"SELECT [Username] FROM [dbo].[System_Users] " + 
            @"WHERE [Username] = @u AND [Password] = @p";
        var cmd = new SqlCommand(_sql, cn);
        cmd.Parameters
            .Add(new SqlParameter("@u", SqlDbType.NVarChar))
            .Value = _username;
        cmd.Parameters
             .Add(new SqlParameter("@p", SqlDbType.NVarChar))
             .Value = Helpers.SHA1.Encode(_password);
        cn.Open();
        var reader = cmd.ExecuteReader();
        if (reader.HasRows)
        {
            reader.Dispose();
            cmd.Dispose();
            return true;
        }
        else
        {
            reader.Dispose();
            cmd.Dispose();
            return false;
        }
    }
}

我首先考虑使用Entity Framework()中的实体数据模型在C#中对数据库对象进行建模,并将其添加到项目中

然后,我将在数据库中创建一个存储过程来处理SQL语句的执行,并传入要测试的参数

然后,我将存储过程导入到数据模型中,并对其运行LINQ查询

大致如下:

var valid = (from users in context.CheckUserMembership(userName: userName, password: password)
select new User
{
   UserId = users.UserId,
   UserName = users.Username
}).Count() > 0;  

其中,上下文是对实体数据模型向导生成的数据上下文的引用,CheckUserMembership是包含SQL语句的导入存储过程。

为应用程序设置LINQ或任何ORM后,可以将其转换为简单的LINQ语句

return _dbContext.Users.Any(c=>c.UserName == _username && c.Password == Helpers.SHA1.Encode(_password));

不能简单地将SQL转换为LINQ.Umm。。。这样检查用户名和密码是不合适的。你的散列函数在哪里?