2013-03-31 3 views
0

Так я пытаюсь создать зарегистрируйся метод с использованием рамки сущности и C# этот метод:Зарегистрируйтесь с помощью Entity Framework

//Button create new account 
    private void BtnSignUp_Click(object sender, EventArgs e) 
    { 
     IEnumerable<DriverAcount> list = from a in context.DriverAcounts select a; 
     foreach (var Ac in list) 
     { 
       if (TxBoxNewUserName.Text != Ac.Login) 
       { 
        if (TxtBoxPASS1.Text == TxBoxPass.Text) 
        { 
         Ac.Login = TxBoxNewUserName.Text; 
         Ac.Password = TxtBoxPASS1.Text; 
         context.DriverAcounts.Add(Ac); 
         MessageBox.Show("the account is create succefuly"); 
         TxBoxNewUserName.Text = ""; 
         TxtBoxPASS1.Text = ""; 
         TxBoxPass.Text = ""; 
         break; 
        } 

        else 
        { 
         MessageBox.Show("the two passwords didn't matched"); 
        } 

        TxBoxNewUserName.Text = ""; 
        TxtBoxPASS1.Text = ""; 
        TxBoxPass.Text = ""; 
        continue; 
       } 
      else 
      { 
       MessageBox.Show("this username is already exist, please choose another one"); 
       TxBoxNewUserName.Text = ""; 
       TxtBoxPASS1.Text = ""; 
       TxBoxPass.Text = ""; 
       break; 
      } 

     } 
     context.SaveChanges(); 
    } 

проблема, когда я хочу, чтобы добавить нового пользователя, как правило, он должен ищет если она существует в базе данных или нет, но это не сделать это правильно, например, если у нас есть два имени в БД name1 и name2 и в TextBox мы имеем name2 это добавит имя2 в DB, даже если он уже существует. Так что плз, если у кого-то есть идея, я буду очень признателен.

ответ

0

Вам нужно снова взглянуть на свой код и понять, что он делает - подключили ли вы отладчик и прошли через него? Имя драйвера всегда будет создано на первой итерации цикла foreach, если первое имя, полученное, не совпадает с именем в текстовом поле. Все остальные будут проигнорированы.

Вы можете попробовать это вместо этого. Нет необходимости запрашивать все записи (например, вы делаете в данный момент), когда вы хотите только проверить, существует ли он уже.

private void BtnSignUp_Click(object sender, EventArgs e) 
{ 
    // This performs a case sensitive match on the login name, you'll need to change it if you want to ignore case 
    DriverAcount existingAccount = context.DriverAcounts.FirstOrDefault(d => d.Login == TxBoxNewUserName.Text); 

    if (existingAccount != null) 
    { 
      MessageBox.Show("This username already exists, please choose another one."); 
    } 
    else 
    { 
      if (TxtBoxPASS1.Text == TxBoxPass.Text) 
      { 
        Ac.Login = TxBoxNewUserName.Text; 
        Ac.Password = TxtBoxPASS1.Text; 
        context.DriverAcounts.Add(Ac); 

        // Only need to call this if you've made changes, so I've moved it here 
        context.SaveChanges(); 

        MessageBox.Show("The account was created successfully"); 
      } 
      else 
      { 
        MessageBox.Show("The two passwords didn't match each other."); 
      } 
    } 

    TxBoxNewUserName.Text = ""; 
    TxtBoxPASS1.Text = ""; 
    TxBoxPass.Text = ""; 
} 
+0

Thnx bro u're right Я не очень хорошо разбираюсь в своем коде, да, теперь он отлично работает. – HASSAROV

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