2012-12-12 31 views
9

Ich habe ein Formular, das eine Einfügung tut. Ich möchte sehen, ob der Datensatz bereits in der Datenbank existiert, um Duplikate zu verhindern. Ich bin mir nicht ganz sicher, wann das ausgehen muss. Im Codebehind für die Steuerelemente ist dies die Form oder in der Klasse, die ich anrufe, um die Einfügung durchzuführen. Unten ist die Klasse, in der ich denke, dass es geht.Wie überprüfen Sie, ob Datensatz existiert

public class AddContacts 
{ 
    public int AddContact(string ContactName) 
    { 
     var myContact = new Solutions.Models.Contact(); 

     myContact.ContactName = ContactName; 

     ItemContext _db = new ItemContext(); 

     _db.Contacts.Add(myContact); 
     _db.SaveChanges(); 
     return myContact.ContactID; 
    } 
} 

Ich habe es mit If-Anweisungen, die .Any() getan gesehen verwenden, aber ich es nicht bekommen kann richtig arbeiten. Noch verstehe ich, was es zurückgeben müsste, damit ich eine Fehlermeldung Contact Name already exists poste.

Antwort

22

Sie könnten der Jede Methode wie folgt verwenden:

bool contactExists = _db.Contacts.Any(contact => contact.ContactName.Equals(ContactName)); 

if (contactExists) 
{ 
    return -1; 
} 
else 
{ 
    _db.Contacts.Add(myContact); 
    _db.SaveChanges(); 
    return myContact.ContactID; 
} 

Die Methode aufrufen Neuer Kontakt, den Rückgabewert überprüfen würde und entscheiden, ob sie dem Benutzer einen Fehler oder eine Bestätigungsmeldung angezeigt werden soll.

5

Führt eine Überprüfung wie folgt aus:

bool doesExistAlready = _db.Contacts.Any(o => o.ContactName == ContactName); 

Wenn das nicht funktioniert, dies versuchen:

bool doesExistAlready = _db.Contacts.Count(o => o.ContactName == ContactName) > 0; 

Schalten Sie SQL Tracing/Debugging, so dass Sie die tatsächliche SQL sehen produziert.

-1

Auch dies kann helfen.

bool doesExistAlready = _db.Contacts.Count(o => o.ContactName == ContactName) > 0; 
Verwandte Themen