C# Обновление записи в проверке данных - PullRequest
0 голосов
/ 21 апреля 2020

У меня есть запись с данными, как показано ниже

Id  Code    Desc
 0   A       AA
 0   B       BB

Когда пользователь добавляет новую запись, все Id будут равны нулю перед сохранением в базе данных. Я хочу проверить запись пользователя, добавляемую в таблицу данных, которая не допускает дублирование.

Я получил класс

 Class book

  public int Id {get; set;}
  public string Code {get; set;}
  public string Desc {get; set;}
  public bool IsEdit {get; set;}

Я делаю следующее

var match = BookTable.Where(r => r.Code == txtCode.Text)
if(match.Count() > 0)
{
     MessageBox.Show("Code exist");
     return;
}

Если пользователь дважды щелкните код B и измените код на код A, появится сообщение. Если пользователь добавляет новую запись и вводит код как A, он также выдаст сообщение о том, где он работает нормально.

Проблема, с которой я сталкиваюсь сейчас, заключается в том, что пользователь дважды щелкает запись A и изменяет только описание, когда нажимает сохранить , он скажет, что код существует, так как код A уже существует.

Как я могу пропустить проверку изменения одной и той же записи?

1 Ответ

0 голосов
/ 21 апреля 2020

Вы должны проверить с вашим ID.

     //First, when you insert an object into your database, you should get the ID of your object and assign it to your gridview row. 


    //For exemple:
      var book= new Book();
      book.Code = "myCode";
      ..
      ..
      using(MyDataContext dc = new MyDataContext())
      {
        dc.Books.Add(book);
        dc.SaveChanges(); //Here, your object gets an ID if auto.
        myGridViewRow.Cells[index].Value = book.ID; //And then, you have not row without ID. 
      }


     //This code will check for a new record.
     var match = BookTable.Any(r => r.Code == txtCode.Text); 
     match will be true or false if there is a record with your txtCode.Text.        

     //And this one will check for an existing record
     var match = BookTable.Any(r => r.Code == txtCode.Text && r.ID != IDOfARecord);
     //This time match will be true if there is another record with the modified text. And thanks to r.ID != IDOfARecord condition, it will not check the modified record.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...