मैं निष्पादन में सुधार के लिए कुछ डैपर प्रश्नों के साथ एक ग़लत LINQ 2 SQL हिट को प्रतिस्थापित करने का प्रयास कर रहा हूं। ऐसा करने में मुझे एएसएन सूचना के लिए आवश्यक सभी जानकारी रखने के लिए आवश्यक बड़ी वस्तु बनाने के लिए एक साथ विभिन्न वस्तुओं का एक गुच्छा बुनाई है।अमूर्त कक्षा संदर्भ से विरासत एंटिटीसेट के लिए डैपर प्रोपइन्फो सेटर शून्य
वर्तमान समस्या मेरे पास एक अमूर्त वर्ग आदेश के साथ है, इस वर्ग को एक भेदभाव संपत्ति का उपयोग करके दो अलग-अलग वर्गों AutionOrder और MerchantOrder द्वारा कार्यान्वित किया जाता है।
चूंकि मैं एक वस्तु बनाने के लिए डैपर का उपयोग नहीं कर सकता जो एक सार वर्ग है, मैं इसके बजाय सार्वजनिक वर्गों में से एक का उपयोग कर रहा हूं। हालांकि जब यह ऑब्जेक्ट बनाने के लिए जाता है तो यह GetSettableProps
के अंदर विफल हो रहा है, यह उचित DeclaringType
ढूंढ रहा है लेकिन GetProperty
विधि internal
पर मौजूद किसी प्रॉपर्टी की तलाश में शून्य हो रही है या EntitySet
है। मैंने बिना किसी सफलता के t.BaseType.GetProperty
के साथ-साथ p.GetAccessors().First().GetBaseDefinition().DeclaringType.GetProperty(p.Name).GetSetMethod(true)
का उपयोग करके इसके आसपास हैक करने की कोशिश की है।
डमी वस्तुओं:
आदेश
OrderID, नाम, पता, RowVersion (आंतरिक), लदान (EntitySet), ORDERDETAILS (EntitySet), तो ग्राहक (EntityRef)
शिपमेंट
शिपमेंट आईडी, ऑर्ड Erid, TRACKINGNUMBER
ORDERDETAILS
OrderDetailID, OrderID, उत्पाद, मात्रा, मूल्य
ग्राहक
CustomerID, नाम,
इस विशेष एसक्यूएल हिट के लिए मैं 1 से 1 रिलेशनशिप मैपिंग्स में से कुछ को पकड़ने की कोशिश कर रहा हूं।
चयन ओ। * ऑर्डर से ओ के रूप में ग्राहकों को ओ में शामिल किया गया है। कस्टमर आईडी = सी। कस्टमर आईडी जहां ओ। ऑर्डर आईडी (1,2,3);
using (var connection = new SqlConnection(_ConnectionString)) { connection.Open(); results = connection.Query<MerchantOrder, MerchantCustomer, MerchantOrder>(sql.ToString(), (o, c) => { o.Customer = c; return o; }, splitOn: "CustomerID"); }
अगर मैं एक सार्वजनिक वर्ग इस समस्या हालांकि चली जाती होने के लिए आदेश को बदलने, लेकिन यह एक वांछित नहीं है:
यह है कि मैं क्या व्यवसायिक उपयोग और यह कर यह जादू है यह बताने के लिए उपयोग कर रहा हूँ है दुष्प्रभाव। RowVersion के लिए propInfo सेट करने का प्रयास करते समय यह असफल रहा है - इस समस्या को हल करने के बजाय इसे पबिक में स्विच करना - हालांकि वांछित नहीं है। लेकिन फिर यह विफल रहता है जब यह ऑर्डर के लिए शिपमेंट ऑब्जेक्ट्स बनाने की कोशिश कर रहा है। ऑर्डर एक सार्वजनिक वर्ग है, फिर से यह कोई मुद्दा नहीं है।
इसके अलावा, मैं इस तरह के आदेश करने के लिए आदेश करने के लिए लदान और ORDERDETAILS के रूप में एक रिश्ते को कई में खींचने के लिए अलग-अलग क्वेरी कर रहा हूँ और एक उचित आदेश वस्तु में परिणाम को सामान्य। MerchantOrder काफी कोई वास्तविक विशेष तर्क के साथ एक खाली वर्ग है। यहाँ भेदभाव अलग बस कैसे हम CustomerID जो वास्तविक एसक्यूएल वैसे भी हिट करने से पहले दूर निकाला है खोजने में पहुंचते हैं।
इसके अलावा, मैं 2011/12/20 के रूप में व्यवसायिक नवीनतम संस्करण का उपयोग कर रहा हूँ।
मैं वास्तव में व्यवसायिक तरह है, लेकिन इस समस्या को मेरे सिर Asplode कर रहा है - तो सहायता के लिए धन्यवाद
आप एक असफल परीक्षण जोड़ सकते हैं ताकि मैं इसे ठीक कर सकते हैं? बस इसके साथ एक पैच सबमिट करें –
मैंने एक असफल परीक्षण जोड़ा है @ https://code.google.com/r/johnzaborow-fail-test/ मुझे अपने परिवर्तनों को स्वचालित रूप से दबाकर कई समस्याएं आईं, इसलिए मैंने इसे एक करके किया । अगर कुछ भी बदलने की जरूरत है तो मुझे बताएं। धन्यवाद! – John
अब तय है, धन्यवाद! –