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 に答える