2016-05-16 12 views
0

Ich habe ein einfaches Formular, das eine Liste von Heat-Typen aus der Datenbank mit Linq zieht. Das Von hat auch ein Textfeld, in dem der Benutzer einen neuen Wärmetyp und eine Schaltfläche "Neuen AC-Typ einfügen" eingeben kann. Der Code funktioniert einwandfrei, es sei denn, er gibt einen vorhandenen Hitzetyp ein. In einem Meldungsfeld wird der Fehler von SQL angezeigt, dass Duplikate in der Tabelle nicht zulässig sind. Nachdem Sie das Feld geschlossen und den neuen AC-Typnamen korrigiert haben, klicken Sie auf "Neuen AC-Typ einfügen". Sie erhalten immer noch den gleichen SQL-Fehler Duplikate sind für den vorherigen Namen nicht zulässig. Es ist so, als ob die erste Änderung noch auf die Einreichung wartet.Linq zu SQL Löschen Änderung nach Einfügen schlägt fehl

private void acNewTypeButton_Click(object sender, EventArgs e) 
    { 
     ACType NewRecord = new ACType(); 
     NewRecord.ACType1 = acAddNewTextBox.Text.ToString(); 

     db.ACTypes.InsertOnSubmit(NewRecord); 

     acAddNewTextBox.Text = ""; 
     try 
     { 
      db.SubmitChanges(); 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.ToString()); 

     } 

     loadDataGrid(); 
    } 
} 
+0

Verwenden Sie Entity Framework? –

+0

Siehe https://stackoverflow.com/questions/1158340/how-do-you-clear-changes-in-linqtosql – sgmoore

Antwort

1

Sie können prüfen, ob es zuerst vorhanden ist, bevor Sie es hinzufügen.

private void acNewTypeButton_Click(object sender, EventArgs e) 
{ 
    var acType = db.ACTypes 
       .FirstOrDefault(a => a.ACType1 == acAddNewTextBox.Text.ToString()); 
    // If it doesn't exist, add it. 
    if (acType == null){ 
     acType = new ACType(); 
     acType.ACType1 = acType.Text.ToString(); 

     db.ACTypes.InsertOnSubmit(acType); 

     db.SubmitChanges(); 

     acAddNewTextBox.Text = ""; 
    } 
    // Already exists 
    else{ 
     MessageBox.Show("AC Type already exists."); 
    } 

    loadDataGrid(); 
} 
Verwandte Themen