2012-12-12 20 views
9

私は挿入を行うフォームを持っています。重複を避けるためにレコードがすでにデータベースに存在するかどうかを確認したい。私はこれがいつ下っていくのか、少し不明です。フォームのコントロールのコードビハインド、または挿入を実行するために私が呼​​び出すクラス内のコードビハインドにあります。以下は私がそれが行くと思っているクラスです。レコードが存在するかどうかを確認するには

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を投稿するために返す必要があることを理解していません。あなたはこのような任意の方法を使用することができ

答えて

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を呼び出す方法は、戻り値をチェックし、ユーザにエラーまたは確認メッセージを表示するかどうかを判断するでしょう。それでも解決しない場合は、この試す、

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

:あなたが生産されている実際のSQLを参照してくださいので、SQLトレース/デバッグの

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

電源を入れ

5

は、このようなチェックを行います。

-1

これも役立ちます。

bool doesExistAlready = _db.Contacts.Count(o => o.ContactName == ContactName) > 0; 
関連する問題