c# - Entity Framework 6 Partial Stored Procedure Mapping -


उदाहरण के लिए, मेरे पास एक ऐसा वर्ग है:

  सार्वजनिक वर्ग कर्मचारी {public int ईद; सार्वजनिक स्ट्रिंग का नाम; सार्वजनिक डबल वेतन; सार्वजनिक तिथि समय बीओडी; }  

और एक संग्रहीत कार्यविधि जो कर्मचारी के लिए केवल id और वेतन स्तंभ देता है, मैं इकाई फ़्रेमवर्क (6 या 5), नीचे दिया गया है:

संग्रहीत कार्यविधि को निष्पादित करें, और जटिल परिणामों का उपयोग किए बिना कर्मचारी ऑब्जेक्ट के परिणामों को मैप करें।

कृपया मेरी मदद करें ।

ध्यान दें:

  1. कृपया ध्यान दें कि प्रक्रिया अधिक जटिल होगी, और मैं लीकक का उपयोग नहीं करना चाहता और नाम या बोड का रिटर्न नहीं देता।
  2. यह मेरी परियोजना में बहुत महत्वपूर्ण है
  3. nhibernate में आप ऐसा कर सकते हैं।

यहाँ क्या है आपको इसकी आवश्यकता है:

  // दो क्लासेस सार्वजनिक वर्ग कर्मचारी बनाएं {सार्वजनिक इन्ट आईडी; सार्वजनिक स्ट्रिंग का नाम; सार्वजनिक डबल वेतन; सार्वजनिक तिथि समय बीओडी; } सार्वजनिक वर्ग कर्मचारी और सीलरी {सार्वजनिक इन्ट आईडी; सार्वजनिक डबल वेतन; } // एक्स्टेंशन फंक्शन बनाएं // हमें ऑटोमैपर एक्सटेंशन लाइब्रेरी का उपयोग करना होगा। // Nuget पैकेज प्रबंधक का उपयोग कर ऑटोमैपर इंस्टॉल करें। और एक क्लास बनाएं और इस कोड को इसमें जोड़ें। नेमस्पेस मॉडल। मैपर {सार्वजनिक स्टेटिक क्लास एम्प्टीमामैपर {सार्वजनिक स्टेटिक कर्मचारी नक्शा-यंत्र कर्मचारी (यह कर्मचारी और सैलरी ओबीजी) {if (obj! = Null) {कर्मचारी मॉडल = ऑटोमैपर। ट्राईऑटोमैप & lt; कर्मचारी & gt; (obj); वापसी मॉडल; } नए कर्मचारी को वापस (); } सार्वजनिक स्थिर IEnumerable & lt; कर्मचारी & gt; MapToEmployee (यह IEnumerable & lt; EmployeeID &Salary & gt; obj) {if (obj! = नल) {वापस obj.Select (x = & gt; x.ConvertToEmployee ())। AsEnumerable (); } नई सूची & lt; मॉडल। कर्मचारी & gt; (); }} सार्वजनिक स्टेटिक क्लास ऑटोमैपर {स्टैटिक ऑटोमैपर () {} सार्वजनिक स्थिर टी TryAutoMap & lt; T & gt; (ऑब्जेक्ट ऑब्जेक्ट) {try {var currentObj = Activator.CreateInstance & lt; T & gt; (); Var प्रकार = वर्तमान ओबज। गेटटाइप (); Var propInfo = type.GetProperties (); Var _type = fromObject.GetType (); अग्रग्राम (var आइटम में _type.GetProperties ()) {var prop = propinfo.Where (c = & gt; c.Name == item.Name) .FirstOrDefault (); अगर (prop! = Null) {// if (prop.GetType ()। IsAssignableFrom (item.GetType ())) (यदि (IsGenericEnumerable (item.PropertyType)) {continue; } अगर (prop.GetType () == आइटम। GetType ()) {try {prop.SetValue (currentObj, item.GetValue (ऑब्जेक्ट से, रिक्त), रिक्त); } पकड़ {}}}}} वापसी चालू ओबज; } पकड़ {वापसी डिफ़ॉल्ट (टी); }} प्राइवेट स्टैटिक बूल इस्लाम (टाइप टाइप) {return type.IsClass & amp; amp; ! Type.IsPrimitive; } प्राइवेट स्टैटिक बूल इज़ेंनेरिकअनमेरेबल (प्रकार प्रकार) {if (टाइप.फ्लाननाम। टूलावर ()। इसमें शामिल हैं ("डेटामोडेल")। टाइप करें। फुल नाइम। टूलावर ()। इसमें शामिल हैं ("मॉडल") || टाइप। फुल नाइम। टू लोवर ( ) .कैम ("संग्रह")) {वापसी सच; }             विवरण झूठा है; }}} // नामस्थान का उपयोग करें - & gt; Models.Mapper.EmployeeMapper; // अपने कार्यवाही को EmployeeIdAndSalary का उपयोग करके प्रयास करें {var _objList = context.SqlQuery & lt; EmployeeID &Salary & gt; ("YourProcedureName @SpParameterName", परम) .ओओएलआईटी ()। MapToEmployee (); } पकड़ {} / / मुझे लगता है कि यह वही है जो आपको चाहिए।  

Comments

Popular posts from this blog

java - Can't add JTree to JPanel of a JInternalFrame -

javascript - data.match(var) not working it seems -

javascript - How can I pause a jQuery .each() loop, while waiting for user input? -