11

के साथ कोड-प्रथम माइग्रेशन का उपयोग करते समय क्लस्टर्ड इंडेक्स कैसे बनाएं, मेरे पास MessageModel है जब संदेश बनाया गया था, के टाइमस्टैम्प विशेषता के साथ। मैं इस लंबी विशेषता पर क्लस्टर्ड इंडेक्स बनाना चाहता हूं। मुझे उम्मीद है कि सभी संदेशों को एक निश्चित टाइमस्टैंप से नया प्राप्त करने के लिए एक क्वेरी करते समय एक क्वेरी स्पीड-अप प्राप्त करने की उम्मीद है। निर्माण के बाद टाइमस्टैंप मान कभी नहीं बदला जाता है। वर्तमान में मेरे पास int Id विशेषता पर एक नियमित अनुक्रमणिका है।एंटीटी फ्रेमवर्क और SQL सर्वर

एटीपी.नेट एमवीसी 4.5 में एंटिटी फ्रेमवर्क कोड-पहला माइग्रेशन का उपयोग करके मॉडल एट्रिब्यूट पर क्लस्टर्ड इंडेक्स कैसे जोड़ सकता हूं?

उत्तर

24

अद्यतन: EntityFramework 6.1 ने [Index] विशेषता प्रस्तुत की जिसका उपयोग मनमाने ढंग से फ़ील्ड पर एक इंडेक्स निर्दिष्ट करने के लिए किया जा सकता है। उदाहरण:

दुर्भाग्य एफई doesn't really provide much support for indexes:

public class MessageModel 
{ 
    [Index(IsClustered = true, IsUnique = false)] 
    public long Timestamp { get; set; } 
} 

इकाई की रूपरेखा के पुराने संस्करणों के लिए, मैं नीचे मेरी मूल जवाब छोड़ देंगे। इस तक पहुंचने का सबसे अच्छा तरीका आपके द्वारा किए जा रहे माइग्रेशन के प्रकार पर निर्भर करता है। यदि आप स्वचालित माइग्रेशन का उपयोग नहीं कर रहे हैं और आप एक नई तालिका में एक इंडेक्स जोड़ना चाहते हैं (यानी आपके पास माइग्रेशन है), तो आप इंडेक्स जोड़ने के लिए माइग्रेशन में जेनरेट किए गए CreateTable कथन को संशोधित कर सकते हैं। इस तकनीक को one of the Entity Framework tutorials में प्रयोग किया जाता है (खोज सूचकांक इसे खोजने के लिए)

आप हैं स्वचालित माइग्रेशन का उपयोग कर (या तालिका पहले से मौजूद है), तो आप अभी भी पुरानी शैली एसक्यूएल का उपयोग अपने सूचकांक बनाने के लिए कर सकते हैं - एक प्रवास उत्पन्न , फिर एक सादा पुराना CREATE INDEX कथन शामिल करने के लिए अपने कोड को संशोधित करें।

+0

धन्यवाद, रिचर्ड। आपने मूल रूप से उत्तर दिया कि मैं डरने के लिए क्या शुरू कर रहा था, लेकिन मुझे लगता है कि मैं एक CREATE INDEX को कॉल करने और इसे वहां से ले जाने का प्रबंधन करूंगा :) – Sindre

+2

यह सुविधा एंटिटी फ्रेमवर्क 6.1 में जोड़ा गया है। – Richard

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