मैं entity framework 5
का उपयोग कर रहा हूं और मैंने अपने .edmx
मॉडल में दो संग्रहीत कार्यविधियाँ जोड़ी हैं।
पहली संग्रहीत प्रक्रिया एक स्ट्रिंग लौटाती है और अगर मैं Visual Studio में मॉडल ब्राउज़र खोलता हूं, तो मैं Returns a Collection Of
अनुभाग को बदल सकता हूं और स्केलर प्रकार को स्ट्रिंग पर सेट कर सकता हूं, निम्नानुसार:
फिर कोड में, मैं एसपी को कॉल कर सकता हूं और इस प्रकार परिणाम प्राप्त कर सकता हूं:
using (var context = new MyEntities())
{
var spResult = context.mySPNameFromTheModel(exampleParameter1, exampleParameter2); // This will get the output as string
}
उपरोक्त उदाहरण ठीक काम करता है, लेकिन मैं एक कॉम्प्लेक्स प्रकार के साथ कैसे कर सकता हूं?
मेरी दूसरी संग्रहीत प्रक्रिया दो स्तंभों के साथ, केवल एक पंक्ति लौटाती है। इसलिए मैंने दो स्ट्रिंग गुणों वाली एक क्लास बनाई, लेकिन जब मैं कॉम्प्लेक्स में बदलता हूं तो मैं इसे नहीं देख सकता, मैं ड्रॉप डाउन से कुछ भी नहीं चुन सकता क्योंकि यह खाली है।
जब मैं Get Column Information
पर क्लिक करता हूं, तो यह सिर्फ यह कहता है कि एसपी कोई कॉलम नहीं लौटाता, जो सच नहीं है।
3 जवाब
- जांचें कि क्या edmx को इसी संग्रहीत कार्यविधि के साथ अपडेट किया गया है
- मैन्युअल रूप से मॉडल ब्राउज़र में एक कॉम्प्लेक्स टाइप बनाने की कोशिश करें।
- सहेजें और पुनर्निर्माण समाधान
- फिर फ़ंक्शन आयात जोड़ें और फ़ंक्शन आयातनाम दें, sp & रिटर्न संग्रह में मैन्युअल रूप से बनाए गए कॉम्प्लेक्स प्रकार का चयन करें।
- अब कॉलम जानकारी प्राप्त करें पर क्लिक करें।
- फिर ओके पर क्लिक करें।
मुझे यह मैपिंग स्टोर्ड प्रोसिजर आउटपुट से पोको क्लास लेख शीर्षक में निर्दिष्ट प्रश्न का उत्तर देने में बहुत सहायक हो सकता है क्योंकि मैं ADO.NET का उपयोग करते हुए तार लिखने के झंझट के बिना इसे करने के लिए एक रास्ता खोज रहा था।
public IList<Order> GetOrders(string CustomerID)
{
var orders = new List<Order>();
using (var con = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString))
{
// Use count to get all available items before the connection closes
using (SqlCommand cmd = new SqlCommand("PagingProcTest", con))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@CustomerID", SqlDbType.NChar).Value = CustomerID;
cmd.Connection.Open();
using (SqlDataReader reader = cmd.ExecuteReader())
{
// Map data to Order class using this way
orders = DataReaderMapToList<Order>(reader).ToList();
// instead of this traditional way
// while (reader.Read())
// {
// var o = new Order();
// o.OrderID = Convert.ToInt32(reader["OrderID"]);
// o.CustomerID = reader["CustomerID"].ToString();
// orders.Add(o);
// }
}
cmd.Connection.Close();
}
}
return orders;
}
private static List<T> DataReaderMapToList<T>(DbDataReader dr)
{
List<T> list = new List<T>();
while (dr.Read())
{
var obj = Activator.CreateInstance<T>();
foreach (PropertyInfo prop in obj.GetType().GetProperties())
{
if (!Equals(dr[prop.Name], DBNull.Value))
{
prop.SetValue(obj, dr[prop.Name], null);
}
}
list.Add(obj);
}
return list;
}
सपा से लौटे स्तंभों में उपनाम जोड़ने का प्रयास करें। उदाहरण के लिए: SELECT table1.id ID
संबंधित सवाल
जुड़े हुए प्रश्न
नए सवाल
c#
C # (उच्चारण "तेज देखें") Microsoft द्वारा विकसित एक उच्च स्तरीय, सांख्यिकीय रूप से टाइप किया हुआ, बहु-प्रतिमान प्रोग्रामिंग भाषा है। C # कोड आमतौर पर Microsoft के .NET परिवार के टूल और रन-टाइम को लक्षित करता है, जिसमें .NET फ्रेमवर्क, .NET कोर और Xamarin अन्य शामिल हैं। C # या C # के औपचारिक विनिर्देश में लिखे गए कोड के बारे में प्रश्नों के लिए इस टैग का उपयोग करें।