इकाई फ्रेमवर्क (विशेष रूप से ईएफ 3.5, लेकिन यदि यह ईएफ 4 में मौजूद है तो यह मुझे अपग्रेड करने का कारण देता है) क्या आलसी लोड करना केवल संग्रह का हिस्सा है? मैं भी इस गलत के पास आ रहा हूं, इसलिए मैं सुझावों के लिए खुला हूं। मेरे टेबल/संस्थाओं कुछ ऐसा दिखाई:आलसी लोड एक इकाई फ्रेमवर्क इकाई मानदंड मानदंड
Person PersonMeal Meal
------ 1---* ---------- *---1 -----
ID ID ID
... PersonID ...
MealID
Value
...
मैं Person
वस्तुओं है कि एक संग्रहीत प्रक्रिया के माध्यम से इकाई की रूपरेखा के माध्यम से पुनः प्राप्त किया गया है की एक सूची है। मेरे पास एक दृश्य है जो एक समय में केवल एक Meal
दिखाता है, इसलिए मुझे केवल उस भोजन से संबंधित जानकारी चाहिए। वर्तमान में मेरे पास ऐसा कोड है जो इस तरह दिखता है:
Function GetPersons() As List(Of Person)
Dim personList = context.StoredProcedureCall(param1, param2, param3).ToList()
personList.ForEach(Function(x) LazyLoadProperties(x))
Return personList
End Function
' Work around function because VB lambdas don't take Sub's
Function LazyLoadProperties(ByVal person As Person) As Object
If (Not person.PersonMeal.IsLoaded) Then
person.PersonMeal.Load()
End If
Return Nothing
End Function
समस्या यह है कि यह संपूर्ण संग्रह लोड हो रहा है। यह माना जाता है कि यह एक छोटा संग्रह है, इसलिए सबसे खराब स्थिति परिदृश्य मैं इसे सब कुछ लोड कर सकता हूं और फिर मुझे जितनी जरूरत हो, उसे हटा दें, लेकिन यह आदर्श से बहुत दूर है। इसके अलावा मुझे यकीन नहीं है कि संग्रह को संशोधित करने की किसी भी घटना को ट्रिगर किए बिना यह संभव होगा क्योंकि उन्हें पहले स्थान पर नहीं होना चाहिए था।
क्या व्यक्ति के पास 'पर्सनल' के साथ कई से अधिक रिश्ते हैं और 'पर्सनल' के पास आपके प्रश्न में दिखाए गए अनुसार 'भोजन' के साथ कई सारे रिश्ते हैं? या 'व्यक्ति' के बजाय 'व्यक्ति' के साथ कई से अधिक संबंध हैं, जबकि 'पर्सनल' कनेक्टिंग टेबल है? यदि हां, तो 'PersonMeal' के लिए उत्पन्न इकाई नहीं होनी चाहिए। हालांकि, मैंने 'Value' फ़ील्ड को भी देखा है। क्या आप अपनी डेटा संरचना को थोड़ा सा स्पष्ट कर सकते हैं? आपके ईडीएम का एक स्क्रीनशॉट उपयोगी हो सकता है, साथ ही साथ आपकी डेटाबेस संरचना भी हो सकती है। – Yakimych
@Yakimych आप सही हैं, यह व्यक्ति के साथ व्यक्ति और भोजन के बीच एक एम 2 एम है जो कनेक्टिंग टेबल/इकाई है। –
@ Agent_9191 - ठीक है, उस स्थिति में केवल 'PersonEntity' तालिका होनी चाहिए, लेकिन कोई इकाई उत्पन्न नहीं हुई है। 'व्यक्ति' इकाई में 'भोजन' का संग्रह होना चाहिए और 'भोजन' इकाई में 'पीपुल्स' का संग्रह होना चाहिए। क्या आपने अपना मॉडल डेटाबेस से बनाया है या इसे खुद डिज़ाइनर में बनाया है? और 'मूल्य' संपत्ति क्या है (यही वजह है कि ईएफ 'व्यक्तिमेल' इकाई उत्पन्न कर रहा है)? – Yakimych