2012-12-12 25 views
9

Mam formularz, który wykonuje wkładkę. Chcę sprawdzić, czy rekord już istnieje w bazie danych, aby zapobiec duplikatom. Nie jestem pewien, kiedy to się skończy. W codebehind dla formantów będących formą lub klasą, do której wzywam, aby wykonać insert. Poniżej znajduje się klasa, w której myślę, że idzie.Jak sprawdzić, czy rekord istnieje?

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

Widziałem to zrobić z przypadku stwierdzenia, które używają .Any(), ale nie mogę dostać to działa dobrze. Nie rozumiem również, co powinienem zwrócić, aby móc opublikować komunikat o błędzie Contact Name already exists.

Odpowiedz

22

można użyć dowolny sposób tak:

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

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

metody wywoływania AddContact by sprawdzić zwracanej wartości i zdecydować, czy wyświetlać komunikat o błędzie lub potwierdzenie dla użytkownika.

5

Czy czek tak:

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

Jeśli to nie zadziała, spróbuj tego:

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

Włącz SQL śledzenia/debugowania więc widać rzeczywiste SQL produkowane.

-1

To też może pomóc.

bool doesExistAlready = _db.Contacts.Count(o => o.ContactName == ContactName) > 0; 
Powiązane problemy