मैं एक ईएफ 4.2 कोड पहले मॉडल का उपयोग कर एक परियोजना पर काम कर रहा हूं। इस मॉडल में उत्पादों के लिए एक टीपीएच विरासत संरचना शामिल है। मुझे भेदभावकर्ता पर इस विरासत मॉडल के पॉलीमोर्फिक परिणामों को समूहित करने की आवश्यकता है और कुछ मुद्दों में चल रहा हूं।एंटीटी फ्रेमवर्क 4.2 तालिका प्रति पदानुक्रम समूह भेदभावकर्ता
इकाई ढांचा इस समूह को पूरा करने के लिए भेदभावकर्ता का पर्दाफाश नहीं करता है। मेरा पहला सवाल यह है कि क्या मुझे इस भेदभावकर्ता की सीधी पहुंच मिल सकती है? मेरा पठन और अनुभव मुझे नहीं बता रहा है, इसलिए मैं इस समाधान के साथ आया कि कामों की तरह। यह अच्छा प्रदर्शन नहीं कर रहा है और मुझे इस बात से प्रसन्नता नहीं है कि इसे कैसे बनाए रखा जाना चाहिए।
Public MustInherit Class Product
<key()>
Public Property ProductID as integer
<StringLength(50, ErrorMessage:="Max 50 characters")>
<Required(ErrorMessage:="Product name is required")>
Public Property Name as String
<TimeStamp()>
Public Property Time_Stamp as DateTime = DateTime.Now()
End Class
Public Class Desktop
Inherits Product
<StringLength(50, ErrorMessage:="Max 50 characters")>
<Required(ErrorMessage:="Processor is required")>
Public Property Processor as String
End Class
Public Class Monitor
Inherits Product
<Required(ErrorMessage:="Monitor size is required")>
Public Property Size_Inches as Integer
End Class
मैं एक विस्तार विधि है कि एक उत्पाद लेता है और यह एक स्ट्रिंग के रूप basetype नाम है रिटर्न बनाया:
मेरे कक्षाएं कुछ इस तरह (सरलीकृत) देखो।
<Extension()>
Public Function ProductType(ByVal inProduct as Product) as String
ProductType = inProduct.GetType().BaseType.Name
End Function
कि के साथ, मैं प्रकार के आधार पर समूह को यह संरचना का निर्माण उत्पाद के परिणाम तो मैं उन के माध्यम से चला सकते हैं:
Dim tmpProducts = db.Products.ToList()
Dim GrpProducts = tmpProducts.GroupBy(Function(prod) prod.ProductType) _
.Select(Function(s) New With {.ProductType = S.Key,
.Products = S })
मैं अब सूची के माध्यम से पाश व्यवहार मैं चाहता हूँ प्राप्त करने के लिए कर सकते हैं, लेकिन प्रदर्शन आदर्श नहीं है और मुझे चिंता है कि उत्पादों की संख्या बढ़ने के कारण यह अस्वीकार्य होगा।
For Each ProductGroup in GrpProducts
Dim TypeName as String = ProductGroup.ProductType
Dim TypeProducts = ProductGroup.Products
Next
इसके अलावा, यह मेरे साझा गुण (नाम) के लिए आसान पहुँच दे सकते हैं लेकिन अब मैं कई विकल्प उनके वास्तविक प्रकार, हो सकता है TypeName के चारों ओर एक चयन के मामले में इन कास्ट करने के लिए नहीं है। । ।
किसी भी सिफारिश की सराहना की जाती है, कृपया उपरोक्त किसी भी कोड त्रुटियों को क्षमा करें, मैंने स्मृति से उदाहरणों को दोबारा हटा दिया क्योंकि मुझे इस समय परियोजना तक पहुंच नहीं है।
यह निश्चित रूप से एक विकल्प है के द्वारा समूह को हल करने के लिए एक रास्ता मिलना चाहिए हालांकि मैं सामान्य गुणों महसूस प्रकार परिभाषा पर हैं जब संभव। हाल ही में मैं बेस क्लास में एक उत्पादित "ProductTypeName" संपत्ति जोड़ रहा हूं। Cludgy लगता है और संग्रहीत डेटा दोहराता है लेकिन यह बेहतर प्रदर्शन करता है। – sgrade1979