2012-12-12 19 views
9

Ho un modulo che fa un inserto. Voglio vedere se il record esiste già nel database per evitare duplicati. Sono un po 'insicuro su quando questo deve andare giù. Nel codebehind per i controlli che è il modulo o nella classe che invoco per eseguire l'inserimento. Di seguito è la classe che è dove sto pensando che vada.Come si controlla se esiste Record

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; 
    } 
} 

ho visto fare con se le istruzioni che utilizzano .Any() ma non riesco a farlo funzionare bene. Né capisco cosa dovrebbe tornare per poter pubblicare un messaggio di errore Contact Name already exists.

risposta

22

è possibile utilizzare il Qualsiasi metodo come questo:

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

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

il metodo di chiamata Agg.contatto sarebbe controllare il valore di ritorno e decidere se visualizzare un messaggio di errore o di conferma all'utente.

5

fare un controllo del genere:

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

Se questo non funziona, provate questo:

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

Accendere l'analisi SQL/debug in modo da vedere la SQL reale prodotta.

-1

Anche questo può aiutare.

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