2012-12-12 174 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;