我有一个插入表单。我想查看数据库中是否已存在该记录以防止重复。我不确定这个什么时候会发生变化。在控件的代码隐藏中,作为表单或我调用的类来执行插入。以下是我认为的课程。
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()
的If语句完成了但我无法正常工作。我也不理解为了发布错误消息Contact Name already exists
而需要返回的内容。
答案 0 :(得分:24)
你可以使用像这样的Any方法:
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的方法将检查返回值并决定是否向用户显示错误或确认消息。
答案 1 :(得分:5)
做这样的检查:
bool doesExistAlready = _db.Contacts.Any(o => o.ContactName == ContactName);
如果这不起作用,请尝试:
bool doesExistAlready = _db.Contacts.Count(o => o.ContactName == ContactName) > 0;
启用SQL跟踪/调试,以便您看到正在生成的实际sql。
答案 2 :(得分:0)
这也有帮助。
bool doesExistAlready = _db.Contacts.Count(o => o.ContactName == ContactName) > 0;