2015-03-31 4 views
9

के साथ शून्य पैरामीटर मान के साथ कॉल संग्रहीत प्रक्रिया कॉल करें मेरे पास SQL ​​सर्वर 2008 पर संग्रहीत प्रक्रिया है और पैरामीटर में से एक शून्य मान स्वीकार करता है। मुझे नहीं पता कि उस एसपी को पैरामीटर पर शून्य मूल्य के साथ कैसे कॉल करें। थोड़ा और संदर्भ के लिए मैं EntityFramework 6xxएंटीटीफ्रेमवर्क

अगले उदाहरण पर पैरामीटर "@status, @compatible" मान के रूप में शून्य हो सकता है, लेकिन मुझे यह अपवाद मिल रहा है कि उन प्रार्म प्रदान नहीं किए गए थे।

public override IList<MyOutputType> SearchStuff(string Term, int? status, bool? Compatible, long TMPLDMID, int RangeFrom, int RangeTo) 
{ 
    List<SqlParameter> par = new List<SqlParameter>(); 
    par.Add(new SqlParameter("@Term", System.Data.SqlDbType.VarChar, 50) { Value = "%" + Term + "%" }); 
    par.Add(new SqlParameter("@status", System.Data.SqlDbType.Int) { Value = status, IsNullable = true }); 
    par.Add(new SqlParameter("@Compatible", Compatible) { IsNullable = true }); 
    par.Add(new SqlParameter("@TMPLDMID", TMPLDMID)); 
    par.Add(new SqlParameter("@RangeFrom", RangeFrom)); 
    par.Add(new SqlParameter("@RangeTo", RangeTo)); 

    return db.Database.SqlQuery<MyOutputType>(
     "EXEC [spSearchForStuff] @Term, @status, @Compatible, @TMPLDMID, @RangeFrom, @RangeTo", par.ToArray() 
    ).ToList(); 
+0

में और अधिक के लिए इस उत्तर मेरा उत्तर आपके प्रश्न का समाधान हो गया? यदि ऐसा है तो कृपया उत्तर के रूप में चुनें। – DeadlyChambers

उत्तर

16

मैं एक ही मुद्दे में भाग गया। यदि मान शून्य थे तो यह डिफ़ॉल्ट लोड होगा। जिसकी मुझे वास्तव में एक शून्य की आवश्यकता थी, इसलिए स्थिति के लिए आपको नीचे करने में सक्षम होना चाहिए।

par.Add(new SqlParameter("@status", (object)status??DBNull.Value); 

जांच गहराई उदाहरण https://stackoverflow.com/a/4556007/1248536

संबंधित मुद्दे