2010-06-03 14 views
5

के साथ इकाई फ्रेमवर्क का उपयोग कर मैं एक स्टैंडअलोन एप्लिकेशन लिख रहा हूं और मैंने अपने डेटा को स्टोर करने के लिए एंटीटी फ्रेमवर्क का उपयोग करने का विचार किया।सी # पूर्णांक प्राथमिक कुंजी पीढ़ी स्थानीय डेटाबेस फ़ाइल (एसडीएफ)

फिलहाल एप्लिकेशन छोटा है इसलिए मैं शुरू करने के लिए स्थानीय डेटाबेस फ़ाइल का उपयोग कर सकता हूं।

बात यह है कि स्थानीय डेटाबेस फ़ाइल में SQL सर्वर के रूप में पूर्णांक प्राथमिक कुंजी उत्पन्न करने की क्षमता नहीं है।

यह "पहचान" तालिका बनाने, लेकिन जब SaveChanges विधि यह निम्न अपवाद फेंकता कॉल करने के लिए कोशिश कर रहा है जब के रूप में आईडी स्तंभ को परिभाषित एक समस्या नहीं है:

{ "सर्वर-उत्पन्न कुंजी और सर्वर द्वारा जेनरेट मूल्यों SQL सर्वर कॉम्पैक्ट द्वारा समर्थित नहीं हैं। "}

कोई भी सुझाव स्थानीय डेटाबेस फ़ाइल में इकाइयों के लिए प्राथमिक कुंजी का प्रबंधन कैसे करें जो भविष्य में SQL सर्वर के साथ संगत होगा?

धन्यवाद, रोनी

+1

क्या आप विजुअल स्टूडियो और एसक्यूएल सर्वर कॉम्पैक्ट संस्करण का संस्करण यहां उपयोग कर रहे हैं? –

+0

वीएस 2008 नेट फ्रेमवर्क 3.5। एसडीएफ संस्करण 3.5.5692.0 – Ronny

उत्तर

2

वहाँ तीन सामान्य तकनीक मैं कहाँ डेटाबेस कोई स्वत: नंबर है के लिए के बारे में सोच सकते हैं।

1) अगला आईडी मान प्राप्त करने के लिए पहले MAX (ID_column) +1 करें। हालांकि, आपको यहां बहु-उपयोगकर्ता मुद्दों के बारे में पता होना चाहिए। इसके अलावा, संख्याएं केवल एक-उपयोग नहीं हैं। यदि आप एक पंक्ति हटाते हैं और एक नई पंक्ति जोड़ते हैं, तो आपको एक ही आईडी मिल जाएगी। यह आपके लिए एक समस्या हो सकती है या नहीं भी हो सकती है।

2) एक GUID का उपयोग करें। बहुत ही अद्वितीय होने की गारंटी है, लेकिन आईडी कॉलम के लिए एक बड़ा पदचिह्न है।

3) एक अलग कुंजी तालिका का उपयोग करें जिसमें असाइन की गई अंतिम आईडी है। यह सुनिश्चित करता है कि संख्याओं का पुन: उपयोग नहीं किया जाता है, लेकिन आपके डेटाबेस में एक अतिरिक्त तालिका जोड़ता है।