2010-09-17 16 views
6

linq-to-sql के साथ तालिका पर linq-to-sql के साथ एक त्रुटि प्राप्त करने से मुझे यह त्रुटि दे रही है "तालिका (मित्र) 'पर ऑपरेशन बनाएं, अपडेट करें या हटाएं नहीं कर सकते हैं क्योंकि इसकी कोई प्राथमिक कुंजी नहीं है। " एक समग्र प्राथमिक कुंजीएक समग्र प्राथमिक कुंजी

+0

यह ठीक है, मैं linq से सहमत हूं। – garik

+0

क्या आपका मतलब एक समग्र प्राथमिक कुंजी है? –

उत्तर

0

LINQ-to-SQL प्राथमिक तालिका के रूप में एक फ़ील्ड int के साथ सर्वश्रेष्ठ प्रदर्शन करता है। यदि आपके पास एक समग्र प्राथमिक कुंजी है, तो आपकी सर्वश्रेष्ठ शर्त एक पूर्णांक फ़ील्ड का उपयोग करके उस तालिका के लिए सरोगेट कुंजी बनाना है।

+1

LinqToSql के रूप में डाउनवोट समग्र प्राथमिक कुंजी के साथ काम करता है, जब कोई उचित नहीं होता है तो आपको सरोगेट पूर्णांक जोड़ने की आवश्यकता नहीं होती है (उदाहरण के लिए यदि समग्र कुंजी स्वाभाविक रूप से पंक्ति की वांछित विशिष्टता को लागू करती है)। इसके बजाय आप 2 कॉलम गुणों को मैन्युअल रूप से डीबीएमएल फ़ाइल में 'प्राथमिक कुंजी = ट्रू' पर सेट कर सकते हैं और LinqToSQL अपेक्षा के अनुसार काम करेगा। –

+0

आप बिल्कुल सही हैं। आप सरोगेट भी बना सकते हैं और एकाधिक कॉलम पर एक अद्वितीय बाधा निर्दिष्ट कर सकते हैं। सवाल यह हो जाता है कि आप संयुक्त प्राथमिक कुंजी को मैन्युअल रूप से प्रबंधित करना चाहते हैं या LINQ-to-SQL को एकल पूर्णांक कुंजी को प्रबंधित करने की अनुमति देना चाहते हैं या नहीं। मैं खुद को एकल पूर्णांक प्राथमिक कुंजी पसंद करता हूं, मुख्य रूप से क्योंकि मैं समग्र विदेशी कुंजी का प्रशंसक नहीं हूं। आपका अनुभव और वरीयता सम्मानजनक रूप से भिन्न हो सकती है ... –

+0

मैं पूरी तरह से ल्यूक से सहमत हूं। लिंक से एसक्यूएल को खुश करने के लिए बस एक सरोगेट कुंजी बनाना उचित कारण नहीं है। –

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