10

我有一个插入的表格。我想看看数据库中是否已经存在记录以防止重复。我有点不确定这什么时候必须下降。在作为表单的控件的代码隐藏中或在我调用以执行插入的类中。下面是我认为的课程。

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

我已经看到它使用 If 语句完成,.Any()但我无法让它正常工作。我也不明白它需要返回什么才能让我发布错误消息Contact Name already exists

4

3 回答 3

26

您可以像这样使用 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 的方法将检查返回值并决定是否向用户显示错误或确认消息。

于 2012-12-12T00:58:44.473 回答
5

做这样的检查:

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

如果这不起作用,请尝试以下操作:

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

打开 SQL 跟踪/调试,以便查看正在生成的实际 sql。

于 2012-12-12T00:59:58.130 回答
0

这也有帮助。

bool doesExistAlready = _db.Contacts.Count(o => o.ContactName == ContactName) > 0;
于 2015-12-03T11:29:03.487 回答