मेरे पास एंटिटी फ्रेमवर्क 4, लैम्ब्डा एक्सप्रेशन और डेटा ट्रांसफर ऑब्जेक्ट्स (डीटीओ) के बारे में एक अर्द्ध जटिल सवाल है।ईएफ 4, लैम्ब्डा, रिपोजिटरी पैटर्न और डीटीओ
तो मेरे पास एक छोटी ईएफ 4 परियोजना है, और स्थापित ओओ सिद्धांतों के बाद, मेरे पास डेटा उपभोक्ताओं (जीयूआई) और डेटा मॉडल के बीच अमूर्तता की एक परत प्रदान करने के लिए एक डीटीओ है।
- VideoDTO = डीटीओ getters/setters साथ, जीयूआई
- VideoEntity = इकाई EF4 द्वारा उत्पन्न द्वारा प्रयोग किया जाता
मेरा प्रश्न जीयूआई द्वारा डीटीओ के उपयोग के चारों ओर घूमती है (और नहीं होने जीयूआई एंटिटी का बिल्कुल उपयोग करता है), डेटा लेयर में लैम्ब्डा पास करने की आवश्यकता के साथ संयुक्त। मेरी डेटा परत एड के साथ एक मूल भंडार पैटर्न है। बदलें, हटाएँ, जाओ, GetList, आदि तो जैसे एक हस्ताक्षर के साथ एक खोज विधि को लागू करने की कोशिश कर रहा:
public IEnumerable<VideoDTO> Find(Expression<Func<VideoEntity, bool>> exp)
...
_dataModel.Videos.Where(exp).ToList<Video>()
---
मेरे समस्या/चिंता का विषय "exp" VideoDTO के बजाय प्रकार VideoEntity के होने की आवश्यकता होगी, है। मैं चिंताओं को अलग करना चाहता हूं ताकि जीयूआई इकाई वस्तुओं के बारे में नहीं जानता। लेकिन अगर मैं
Func<VideoDTO, bool>
मैं तब LINQ नहीं कर सकता, जहां वास्तविक अभिव्यक्ति मॉडल का उपयोग करके उस अभिव्यक्ति पर।
वहाँ एक रास्ता एक Func<VideoEntity, bool>
करने के लिए एक Func<VideoDTO,bool>
कन्वर्ट करने के लिए आदर्श रूप में मेरी विधि हस्ताक्षर Func<VideoDTO, bool>
को स्वीकार करेंगे और इस तरह जीयूआई अंतर्निहित डेटा इकाई के लिए कोई संदर्भ होता है।
क्या यह पर्याप्त स्पष्ट है? आपकी मदद के लिए धन्यवाद
आप दोनों को प्रतिलिपि बनाने के लिए धन्यवाद।
मैं किसी ऑब्जेक्ट में खोज मानदंड को परिभाषित करने और LINQ अभिव्यक्ति में इसका उपयोग करने का विचार करूंगा। एक सीखने की परियोजना के रूप में इसका उपयोग करके, ईएफ 4 और एल 2 एस दोनों के साथ शुरू करें।
फिर से धन्यवाद!