2012-12-12 4 views
9

J'ai un formulaire qui fait un insert. Je veux voir si l'enregistrement existe déjà dans la base de données pour éviter les doublons. Je suis un peu incertain de quand cela doit descendre. Dans le codebehind pour les contrôles qui est le formulaire ou dans la classe que j'appelle pour effectuer l'insertion. Voici la classe où je pense que ça va.Comment vérifier si Record existe

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

Je l'ai vu faire avec Si des déclarations qui utilisent .Any() mais je ne peux pas le faire fonctionner à droite. Je ne comprends pas non plus ce qu'il faudrait retourner pour que je puisse afficher un message d'erreur Contact Name already exists.

Répondre

22

Vous pouvez utiliser la méthode Tout comme ceci:

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

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

La méthode d'appel AjoutContact vérifierait la valeur de retour et décider d'afficher un message d'erreur ou de confirmation à l'utilisateur.

5

Faites une vérification comme ceci:

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

Si cela ne fonctionne pas, essayez ceci:

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

Activer le traçage SQL/débogage de sorte que vous voyez la réelle sql produite.

-1

Cela aussi peut aider.

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