2010-06-24 10 views
15

मेरे पास मेरे डीबी में एक विशिष्ट दृश्य बनाया गया है (बाएं शामिल होने के साथ लगभग 5-6 टेबल शामिल हैं)। यह दृश्य मेरे edmx (इकाई फ्रेमवर्क 1.0) में जोड़ा गया है। हाल ही में मैंने देखा है कि स्तंभ रिकॉर्ड में से एक edmx दोहराया गया कई बार (संस्थाओं और फिर ToList() करने के लिए LINQ) का उपयोग हालांकि डेटाबेस ध्यान में रखते हुए वे विभिन्नडेटाबेस दृश्यों के लिए इकाई फ्रेमवर्क परिणाम विसंगति

Column-N (Expected result/ result from DB view) 
--------- 
data1 
data2 
data3 
data4 
data5 

Column-N(Actual result generated by entity framework) 
--------- 
data1 
data1 
data1 
data1 
data1 

मैं अपने एसक्यूएल प्रोफाइलर ऊपर गोली चलाई थे प्राप्त की, मिला क्वेरी जो मेरे अनुप्रयोग द्वारा SQL सर्वर पर भेजी गई थी, ने इसे चलाया और यह मुझे अपेक्षित परिणाम लौटा दिया।

MSDN एक समान पद here और here है, लेकिन मॉडरेटर कैसे इस समस्या को हल करने के लिए पर सविस्तार नहीं किया है। मेरे कुंजी, मूल कारण आप ने कहा मुझे लगता है कि सही है एक GUID

होता है, समस्या आवेदन पक्ष एफई मानचित्रण पर है के रूप में एफई डाटाबेस के साथ अलग वस्तु मानचित्रण नियम हैं। जब क्वेरी परिणामों में डेटाबेस से लौटा दिया गया है, तो EF एप्लिकेशन मेमोरी पर मैपिंग अपने स्वयं के डिज़ाइन तर्क के अनुसार मैपिंग करेगा।

इन तर्कों को को ध्यान में रखना महत्वपूर्ण है जब आप अपने अपने डेटाबेस पक्ष में क्वेरी देखें। मैं सोचता हूं कि आपको पर अपनी दृश्य क्वेरी पर कुछ समायोजन करना चाहिए।

मुझे यकीन है कि है कि क्या आप समस्या हल कर दिया है, अगर डेटाबेस संरचना इस मुद्दे से संबंधित और देखने क्वेरी आप लिखा नहीं प्रदान करें नहीं कर रहा हूँ।

धन्यवाद Binze

किसी से पहले एक ऐसी ही समस्या का सामना करना पड़ा है?

उत्तर

17

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

+0

आप सही हैं।मैं गलत तरीके से यह मान रहा था कि जब तक मैं गया और स्टोरेजमोडेल और संकल्पनात्मक मॉडल को देखा, तब तक यह मेरी कुंजी को प्राथमिक कुंजी के रूप में उठा रहा था। यह प्राथमिक कुंजी के रूप में कुछ अन्य कॉलम का उपयोग कर रहा था और इसलिए गड़बड़। मैन्युअल रूप से कुंजी को बदलकर इसे ठीक किया गया (VS2008 GUI का उपयोग किए बिना) – ram

0

मेरे लिए समान समस्या से पहले लौटाया गया था। एक इकाई देखें (VReport) की तरह कुछ करने के लिए VS2010 जादूगर से अपने आप जेनरेट किया गया था: जब मैं डेटाबेस, SQL क्वेरी सही ढंग से बनाई गई थी से रिकॉर्ड लिया गया और वापस आ उम्मीद (और विशिष्ट) परिणाम

class VReport 
Line: int (key) 
Desc: string 
Date: DateTime 

, लेकिन इसके बजाय इकाई फ्रेमवर्क ने बहुत सारे डुप्लिकेट रिकॉर्ड लौटाए।

लेकिन बजाय, यह भी तिथि कॉलम/क्षेत्र इस समस्या को हल करने के लिए इकाई की प्रमुख गठन में partecipate को

तो, के लिए होता है, मैं इकाई कुंजी से क्षेत्र की संपत्ति बदल दिया है: झूठी ->सच

class VReport 
Line: int (key) 
Desc: string 
Date: DateTime (key) 
संबंधित मुद्दे