2009-10-19 8 views
119

यह बात मुझे पागल गाड़ी चला रहा है, और त्रुटि मेरे लिए काफी अर्थहीन है:यह एक DefiningQuery लेकिन कोई InsertFunction तत्व है ... अरे

EntitySet 'TableB' अद्यतन करने के लिए है क्योंकि यह एक DefiningQuery है असमर्थ और वर्तमान ऑपरेशन का समर्थन करने के लिए तत्व में कोई तत्व मौजूद नहीं है।

मेरे टेबल इस तरह रखा जाता है:

 
TableA 
int idA (identity, primary key) 
... 

TableB 
int idA (FK for TableA.idA) 
int val 

TableB एसक्यूएल सर्वर में कोई परिभाषित प्राथमिक कुंजी है। इकाई फ्रेमवर्क ने टेबल और एसोसिएशन आयात किया है और दोनों फ़ील्ड को कुंजी के रूप में सेट किया है। लेकिन जब मैं तालिका में डालने की कोशिश करता हूं तो यह उस त्रुटि को आउटपुट करेगा!

क्या गलत है ??


संपादित करें: एलेक्स ने सुझाव दिया है, समाधान यह था:

  1. ठीक है, edmx फ़ाइल पर क्लिक करें के साथ, एक्सएमएल संपादक
  2. खोलें का चयन करें edmx में इकाई का पता लगाएँ : स्टोरेज मॉडल तत्व
  3. DefiningQuery को पूरी तरह हटाएं
  4. स्टोर का नाम बदलें: स्कीमा = "डीबीओ" स्कीमा = "डीबीओ" (अन्यथा, कोड) कह नाम अवैध है एक त्रुटि उत्पन्न होगा
  5. दुकान निकालें: नाम संपत्ति

मैं, के रूप में यह था कुंजी छोड़ दिया, क्योंकि यह मेरे लिए ठीक था कि दोनों स्तंभों कुंजी का हिस्सा हैं।

+5

अद्यतन के लिए धन्यवाद - कदम दर कदम निर्देश मदद की इस ईएफ newb एएसपी.NET एमवीसी ट्यूटोरियल ऐप काम कर रहा है! –

+0

इसके लिए Thnx! मुझे एक समस्या थी कि ईएफ ने SQL सर्वर 2000 तालिका के लिए उचित edmx फ़ाइल नहीं बनाई है जो प्राथमिक कुंजी है। लेकिन इस निर्देश ने मुझे बचाया :) – 100r

+4

3.5 साल बाद, और यह पोस्ट अभी भी पीपीएल की मदद कर रहा है, इस मामले में, एमई! ... करने के लिए: कदम से वर्णनात्मक कदम के लिए Palantir (यह काम किया) और एलेक्स के लिए धन्यवाद >>> ब्रावो! – nanonerd

उत्तर

139

वैसे जब प्राथमिक तालिका के बिना कोई तालिका का सामना किया जाता है तो इसे एक व्यू के रूप में माना जाता है।

और स्टोरेजमोडेल \ EntitySet [n] \ DefiningQuery तत्व में EDMX फ़ाइल (देखने के लिए एक XML संपादक में खोलें) में दिखाई देते हैं।

जब आपके पास DefiningQuery है तो इकाई तब तक पढ़ी जाती है जब तक आप संशोधन फ़ंक्शन नहीं जोड़ते। सम्मिलित करने, अपडेट करने और हटाने के लिए आपको 3 संशोधनों के कार्यों (उर्फ संग्रहित प्रक्रियाओं) की आवश्यकता है।

बदलें कुंजी definion:

लेकिन आपके पास दो विकल्प

  1. And convince the EF that what it thinks is a view is really a table
  2. या जोड़ने उचित संशोधन कार्यों

आपके मामले में मेरा सुझाव है (1)।

+0

यह बहुत अच्छा था, धन्यवाद! – Palantir

+0

उत्कृष्ट, सही काम किया। – SamuelWarren

+0

मुझे यह त्रुटि मिली जब मैं एक जंक्शन तालिका में एक इकाई जोड़ने की कोशिश कर रहा था। आपके सुझाव ने इसे ठीक किया, धन्यवाद! –

1

@Palantir। सत्यापित करें कि आपके दोनों टेबलों में प्राथमिक कुंजी सेट हैं, और तालिका में सेट की गई कई प्राथमिक कुंजी से सावधान रहें।

12

बस तालिका में प्राथमिक कुंजी जोड़ें। बस। समस्या सुलझ गयी।

ALTER TABLE <TABLE_NAME> 
ADD CONSTRAINT <CONSTRAINT_NAME> PRIMARY KEY(<COLUMN_NAME>) 
5

मुझे मेरी तालिका पर एक प्राथमिक कुंजी याद आ रही थी और यह त्रुटि संदेश मिला। एक बात मैंने ध्यान में रखी थी जब मैंने टेबल पर कुंजी जोड़ दी थी, मुझे डिजाइनर का उपयोग करके एडीएमएक्स से तालिका को साफ़ करने की आवश्यकता थी, एडीएमएक्स को सेव करें, फिर टेबल को वापस जोड़ने के लिए इसे दोबारा अपडेट करें। यह कुंजी नहीं उठा रहा था चूंकि इसे पहले से ही एक दृश्य के रूप में असाइन किया गया था। इसे मैन्युअल रूप से एडीएमएक्स को संपादित करने की आवश्यकता नहीं थी।

3

...... मेज पर प्राथमिक कुंजी जोड़ें, edmx मॉडल, डेटाबेस से तो चयन अद्यतन, निर्माण और चलाने से मॉडल को हटा काम करता है

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