【问题标题】:How to convert SQL to LINQ?如何将 SQL 转换为 LINQ?
【发布时间】:2023-03-18 04:18:01
【问题描述】:

这是我在 MVC4 模型中的 IsValid 用户登录代码。

我正在尝试将我的 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;
        }
    }
}

【问题讨论】:

  • 不能简单地将 SQL 转换为 LINQ。
  • 嗯……这样检查用户名和密码是不行的。你的哈希函数在哪里?

标签: sql asp.net-mvc linq


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    我首先会考虑使用实体框架 (http://msdn.microsoft.com/en-gb/data/ef.aspx) 中的实体数据模型在 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;  
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-02
      • 2011-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多