web-dev-qa-db-fra.com

Comment vérifier si l'enregistrement existe

J'ai un formulaire qui fait une insertion. Je veux voir si l'enregistrement existe déjà dans la base de données pour éviter les doublons. Je ne sais pas trop quand cela doit se terminer. Dans le code -hind pour les contrôles, c'est le formulaire ou dans la classe à laquelle j'appelle pour effectuer l'insertion. Ci-dessous se trouve la classe à laquelle je pense que cela va aller.

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 les instructions If qui utilisent .Any() mais je ne peux pas le faire fonctionner correctement. Je ne comprends pas non plus ce qu'il faudrait retourner pour que je puisse poster un message d'erreur Contact Name already exists.

10
jackncoke

Vous pouvez utiliser la méthode Any 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 appelant AddContact vérifierait la valeur de retour et déciderait d'afficher un message d'erreur ou de confirmation à l'utilisateur.

23
siger

Faites un chèque comme ça:

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;

Activez le traçage/débogage SQL pour voir le SQL en cours de production.

5
Arash Emami

Cela aussi peut aider. 

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