2012-12-12 8 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() का उपयोग, लेकिन मैं यह सही काम नहीं मिल सकता है किया देखा है। न ही मुझे समझ में आता है कि मुझे त्रुटि संदेश 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 वापसी मान की जाँच करें और उपयोगकर्ता के लिए एक त्रुटि या पुष्टिकरण संदेश प्रदर्शित करने के लिए तय होगा।

5

इस तरह की एक जाँच करें: ताकि आप देख वास्तविक एसक्यूएल उत्पादन किया जा रहा

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

एसक्यूएल ट्रेसिंग/डीबगिंग चालू:

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

यदि वह काम नहीं करता है, इस प्रयास करें।

-1

यह भी मदद कर सकता है।

bool doesExistAlready = _db.Contacts.Count(o => o.ContactName == ContactName) > 0; 
संबंधित मुद्दे

 संबंधित मुद्दे