2013-05-10 6 views
0

Вот мой код входа пользователя IsValid в модель MVC4.Как преобразовать SQL в LINQ?

Я пытаюсь преобразовать команду 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; 
     } 
    } 
} 
+0

Один из них не просто преобразует SQL в LINQ. – phadaphunk

+1

Умм ... это не нормально проверять имя пользователя и пароль. Где ваша хеш-функция? –

ответ

0

После того, как у вас есть LINQ или любая установка ORM для вашего приложения, его можно преобразовать в простой оператор LINQ.

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

Я бы сначала посмотреть на использовании модели данных Entity, как те, в Entity Framework (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; 

Где контекст представляет собой ссылку на контекст данных, сгенерированных мастер Entity Data Model и CheckUserMembership импортный хранимую процедуру, содержащую ваш SQL заявление.

Смежные вопросы