2010-08-12 7 views
15

ठीक है, यहां परिदृश्य है। मेरे पास 3 टेबल हैं। जिसे एस्पनेट_यूसर कहा जाता है जिसे एक कहा जाता है और उपयोगकर्ता नामक नामक एक लिंकिंग टेबल कहा जाता है। aspnet_Users और श्रेणियों में प्राथमिक कुंजी (उपयोगकर्ता आईडी और आईडी क्रमशः) हैं। लिंकिंग टेबल में केवल दो कॉलम हैं: Category आईडी और उपयोगकर्ता आईडी, और प्रत्येक कॉलम के लिए विदेशी कुंजी रिश्ते सेटअप हैं और मेरे पास User_Categories पर दो कॉलम के लिए एक अद्वितीय कुंजी सेटअप है। यह aspnet_Users तालिका और श्रेणियों तालिका के बीच कई से अधिक रिश्तों को स्थापित करता है। मैंने इस डेटाबेस सेटअप से मेरी इकाइयों edmx फ़ाइल जेनरेट की, और सब कुछ सही दिखता है और लगभग सभी परिचालनों के लिए काम करता है।इकाई फ्रेमवर्क 4 त्रुटि: EntitySet को अपडेट करने में असमर्थ क्योंकि इसमें DefiningQuery

मैं जो करना चाहता हूं वह एक फॉर्म से एक नई श्रेणी जोड़ता है (जो स्वयं द्वारा खुद को काम करता है), और साथ ही साथ, उस नए उपयोगकर्ता को उस नई सबमिट श्रेणी के साथ संबद्ध करता है। जब मैं ऐसा करने की कोशिश करता हूं तो मुझे अपनी विषय पंक्ति में त्रुटि मिलती है। यहाँ कोड मैं इस (ctx मेरी संस्थाओं संदर्भ वस्तु है) की कोशिश करने का उपयोग कर रहा हूँ है:

public ActionResult Create(Category category, Guid userId) 
{ 
    aspnet_Users user = ctx.aspnet_Users.SingleOrDefault(x => x.UserId == userId); 
    ctx.Categories.AddObject(category); 
    user.Categories.Add(category); 
    ctx.SaveChanges();; 
    return RedirectToAction("Index"); 
} 

क्यों नहीं इस काम करता है?

उत्तर

38

मुझे लगता है पूरा अपवाद संदेश के लिए कुछ इसी तरह है:

Unable to update the EntitySet YourTableName because it has a DefiningQuery and no InsertFunction element exists in the ModificationFunctionMapping element to support the current operation.

अगर आपके डीबी की मेज परिभाषित एक प्राथमिक कुंजी नहीं है यह हो जाएगा।

अपनी तालिका में प्राथमिक कुंजी जोड़ें (SQL सर्वर प्रबंधन स्टूडियो या जो भी हो), और डेटाबेस से .edmx मॉडल अपडेट करें।

+1

यदि आप इसे तालिका के बजाय दृश्य पर प्राप्त करते हैं तो क्या होता है !! – Necronet

+1

@Necronet, क्षमा करें मैं नहीं कह सकता। दृश्य कुंजी भी परिभाषित कर सकते हैं, है ना? क्या आपके पास अपने विचार पर परिभाषित किया गया है? –

+0

हां लेकिन ईएफ स्वचालित रूप से मेरी चाबियाँ (और यादृच्छिक रूप से भी) सेट कर रहा है, मैंने एक्सएमएल संपादक के साथ डीएमएक्स को संपादित करने की कोशिश की लेकिन हर बार जब मैं इसे अपडेट करता हूं तो इसे सही दाएं वापस सेट करता है, पता नहीं क्यों ... – Necronet

2

त्रुटि: क्योंकि यह एक DefiningQuery

दो बार है कि मैं इस त्रुटि मिली, दो बार मैं हर जगह जवाब के लिए खोज की है, और अंत में मेरी मैपिंग में गड़बड़ किया गया था या डेटाबेस कोई प्राथमिक कुंजी था या EntitySet अपडेट करने में असमर्थ कुछ कुछ। मैं यह सब देखने का सुझाव देते ...

2

मैं एक ही समस्या का सामना है, और मैं नीचे दिए गए लिंक द्वारा तय:

मैं हटाने तीसरे लिंक की सामग्री के आधार पर DefiningQuery में .edmx का अनुभाग। और फिर सब कुछ एक आकर्षण के रूप में काम करता है।

+1

यह डेटाबेस के पहले मॉडल में टिकाऊ नहीं है। मॉडल को अपडेट करने से बदलावों को उड़ा दिया जाएगा। – Dan

2

मानचित्रण तालिका पर एक समग्र प्राथमिक कुंजी रखें, यह ईएफ को सही तरीके से संभालने के लिए बताएगा।

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