2012-12-12 212 views
9

我有一個插入表單。我想查看該記錄是否已經存在於數據庫中以防止重複。我有點不確定這種情況何時會下降。在窗體的控件的代碼隱藏中,或者在我調用的用於執行插入的Class中。以下是我正在考慮的課程。如何檢查記錄是否存在

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

我已經看到它如果使用.Any()語句,但我不能得到它的工作做的權利。我也不理解需要返回什麼,以便我發佈錯誤消息Contact Name already exists

回答

22

你可以使用任何方法是這樣的:

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

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

的方法調用的addContact會檢查返回值,並決定是否顯示錯誤或確認消息給用戶。

5

做一次檢查是這樣的:讓你看到正在生產的實際SQL上的SQL跟蹤/調試

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

轉到:

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

如果還是不行,請嘗試以下。

-1

這也可以幫助。

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