ऑर्चर्ड में, मॉड्यूल डेवलपर कैसे सीख सकता है कि कैसे "जुड़ता है" काम, विशेष रूप से कोर पार्ट्स और रिकॉर्ड्स में शामिल होने पर? मैंने देखा है कि बेहतर मदद में से एक Orchard documentation में था, लेकिन इनमें से कोई भी उदाहरण मौजूदा या कोर भागों के साथ संबंध बनाने का तरीका दिखाता है। कुछ मैं तलाश कर रहा हूँ का एक उदाहरण के रूप में, यहाँ एक काम उदाहरण से लिया मॉड्यूल सेवा कोड का एक टुकड़ा है:ऑर्चर्ड को समझना और डेटा संबंध
_contentManager
.Query<TaxonomyPart>()
.Join<RoutePartRecord>()
.Where(r => r.Title == name)
.List()
इस मामले में, एक कस्टम TaxonomyPart
एक कोर RoutePartRecord
साथ शामिल हो रहा है। मैंने कोड की जांच की है, और मैं नहीं देख सकता कि कैसे टैक्सोनोमीपार्ट रूटपार्ट रिकार्ड में "जुड़ने योग्य" है।
List<string> tags = new List<string> { "hello", "there" };
IContentQuery<TagsPart, TagsPartRecord> query = _cms.Query<TagsPart, TagsPartRecord>();
query.Where(tpr => tpr.Tags.Any(t => tags.Contains(t.TagRecord.TagName)));
IEnumerable<TagsPart> parts =
query.Join<CommonPartRecord>()
.Where(cpr => cpr.Id != currentItemId)
.OrderByDescending(cpr => cpr.PublishedUtc)
.Slice(part.MaxItems);
मैंने सोचा कि मैं कैसे अपने ही क्वेरी के लिए फार्म की पूर्व उदाहरणों में से एक से सीख सकते हैं: इसी तरह, कोड काम करने से, यहाँ एक और टुकड़ा चालक कोड है जो एक कोर CommonPartRecord के साथ एक कस्टम TagsPart संबंधित है। मैं इस किया था:
List<string> tags = new List<string> { "hello", "there" };
IContentQuery<TagsPart, TagsPartRecord> query = _cms.Query<TagsPart, TagsPartRecord>();
query.Where(tpr => tpr.Tags.Any(t => tags.Contains(t.TagRecord.TagName)));
var stuff =
query.Join<ContainerPartRecord>()
.Where(ctrPartRecord => ctrPartRecord.ContentItemRecord.ContentType.Name == "Primary")
.List();
मेरी कोड के इरादे एक विशेष कंटेनर (या ब्लॉग) का केवल उन लोगों के लिए पाया सामग्री आइटम सीमित करने के लिए है। जब कोड चला गया, तो उसने {"could not resolve property: ContentType of: Orchard.Core.Containers.Models.ContainerPartRecord"}
कहकर मेरी जॉइन पूछताछ पर एक अपवाद फेंक दिया।
- क्यों ड्राइवर का प्रदर्शन में() दूसरे उदाहरण की विधि
CommonPartRecord
आबादी है, लेकिन नहींContainerPartRecord
है: इस सवाल की एक किस्म की ओर जाता है? आम तौर पर मुझे कैसे पता चलेगा कि कौन से भाग रिकॉर्ड आबादी वाले हैं, और कब? - कार्य कोड स्निपेट में, कोई भी कुंजी/शर्त निर्दिष्ट नहीं होने के बाद से काम करने में वास्तव में कैसे शामिल है (और कोई अंतर्निहित जॉइन कुंजी स्पष्ट नहीं है)? उदाहरण के लिए, मैंने डेटा माइग्रेशन फ़ाइल और
models
कक्षाओं की जांच की, और टैगपार्ट और कॉमनपार्ट रिकार्ड के बीच कोई अंतर्निहित संबंध नहीं मिला। इस प्रकार, उस नमूना कोड को देखने के अलावा, किसी को भी पहले स्थान पर कैसे जाना होगा कि इस तरह के शामिल कानूनी या संभव थे? - क्या शामिल है मैंने किसी भी संदर्भ में
TagsPart
औरContainerPartRecord
कानूनी के साथ प्रयास किया है? कौन कौन से? - क्या इन उदाहरणों की क्वेरी सिंटैक्स मुख्य रूप से एनएचबेर्नेट के ऑर्चर्ड, या LINQ से NHibernate का प्रतिबिंब है? यदि यह मुख्य रूप से एनएचबर्ननेट का प्रतिबिंब है, तो एनएचबीर्नेट पुस्तक या आलेख को पढ़ने की अनुशंसा की जाती है ताकि मैं ऑर्चर्ड में गहरी खुदाई कर सकूं?
ऐसा लगता है कि इस तरह के विचारों और प्रश्नों के बारे में दस्तावेज में एक छेद है, जो मॉड्यूल लिखना मुश्किल बनाता है। इस विषय के लिए जो भी उत्तर मिल सकते हैं, मुझे एक लेख या समुदाय ऑर्चर्ड दस्तावेज में संकलित करने में खुशी होगी।
आपके उत्तर एक बड़ी मदद हैं। मुझे लगता है कि अगला कदम, नए दस्तावेज के लिए तैयार करने के लिए, उत्तर # 2 पर विस्तृत करना है। अभी के लिए, मुझे लगता है कि क्यू एंड ए मंच से एक संवाद बेहतर होगा। क्या हमारे पास ई-मेल चर्चा हो सकती है? [email protected] –