11

के साथ संग्रहीत प्रक्रिया मैं इकाई फ्रेमवर्क 4.1 कोड पहले का उपयोग करता हूं। मैं एक संग्रहीत प्रक्रिया को कॉल करना चाहता हूं जिसमें आउटपुट पैरामीटर हो और दृढ़ता से टाइप किए गए परिणाम सेट के अतिरिक्त उस आउटपुट पैरामीटर के मान को पुनर्प्राप्त करें। इसईएफ 4.1 कोड पहला: आउटपुट पैरामीटर

public IEnumerable<MyType> Search(int maxRows, out int totalRows, string searchTerm) { ... } 

की तरह एक हस्ताक्षर के साथ यह एक खोज समारोह मैं संकेत के बहुत सारे मिल गया "समारोह आयात" लेकिन यह है कि कोड पहले से संगत नहीं है करने के लिए। मैं डेटाबेस.SqlQuery (...) का उपयोग कर संग्रहित प्रक्रियाओं को कॉल कर सकता हूं लेकिन यह आउटपुट पैरामीटर के साथ काम नहीं करता है।

क्या मैं EF4.1 कोड का उपयोग कर उस समस्या को हल कर सकता हूं?

उत्तर

26

SqlQuery आउटपुट पैरामीटर के साथ काम करता है लेकिन आपको SQL क्वेरी को सही ढंग से परिभाषित करना होगा और SqlParameter एस सेटअप करना होगा। कुछ ऐसा प्रयास करें:

var outParam = new SqlParameter(); 
outParam.ParameterName = "TotalRows"; 
outParam.SqlDbType = SqlDbType.Int; 
outParam.ParameterDirection = ParameterDirection.Output; 

var data = dbContext.Database.SqlQuery<MyType>("sp_search @SearchTerm, @MaxRows, @TotalRows OUT", 
       new SqlParameter("SearchTerm", searchTerm), 
       new SqlParameter("MaxRows", maxRows), 
       outParam); 
var result = data.ToList(); 
totalRows = (int)outParam.Value; 
+0

बिल्कुल सही! गायब टुकड़े क्वेरी पैरामीटर सूची में "पैरामीटर डायरेक्शन। आउटपुट" और "आउटलेट" के बाद "आउट" थे। धन्यवाद! –

+0

यह तब प्रतीत नहीं होता है जब आपके पास एकाधिक OUTPUT पैरामीटर होते हैं। प्रत्येक के लिए मूल्य शून्य है। कोई भी भाग्य एकाधिक OUTPUT पैरामीटर के साथ ऐसा कर रहा है? –

+0

मेरा एसपी कुछ भी नहीं देता .... तो उस मामले में क्या किया जाना चाहिए .... SqlQuery काम नहीं कर रहा है .... कोई सुझाव? –