2015-03-31 11 views
9

Ho una stored procedure su sqlserver 2008 e uno dei parametri accetta valori null. non so come chiamare quel SP con un valore nullo sul parametro. per un po 'più di contesto sto usando EntityFramework 6xxProcedura memorizzata chiamata con un valore di parametro null con EntityFramework

Nel prossimo esempio i parametri "@status, @Compatible" possono avere valore nullo, ma sto solo ricevendo un'eccezione dicendo che quei prarams non sono stati forniti.

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

Ha fatto la mia risposta risolve il tuo problema? In tal caso, selezionare come risposta. – DeadlyChambers

risposta

16

Ho incontrato lo stesso problema. Se i valori fossero nulli, caricarebbe il valore predefinito. Che in realtà avevo bisogno di un null, quindi per lo stato dovresti essere in grado di fare sotto.

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

controllo questa risposta per di più in profondità esempi https://stackoverflow.com/a/4556007/1248536