如何检查Record是否存在

时间:2012-12-12 00:40:09

标签: c# asp.net linq entity-framework

我有一个插入表单。我想查看数据库中是否已存在该记录以防止重复。我不确定这个什么时候会发生变化。在控件的代码隐藏中,作为表单或我调用的类来执行插入。以下是我认为的课程。

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而需要返回的内容。

3 个答案:

答案 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;