2015-03-31 8 views
9

Mam procedura składowana na serwerze sqlserver 2008 i jeden z parametrów akceptuje wartości puste. Nie wiem, jak wywołać to SP z wartością pustą parametru. dla nieco więcej kontekstu używam EntityFramework 6xxProcedurę zapisywania wywołań z wartością pustego parametru z EntityFramework

W następnym przykładzie parametry "@status, @Compatible" mogą mieć wartość null jako wartość, ale otrzymuję wyjątek mówiąc, że te prarams nie zostały dostarczone.

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

Czy moja odpowiedź rozwiązać swoje pytanie? Jeśli tak, wybierz jako odpowiedź. – DeadlyChambers

Odpowiedz

16

Wpadłem na ten sam problem. Jeśli wartości byłyby zerowe, ładowałoby się domyślnie. Które faktycznie potrzebowałem null, więc dla statusu powinieneś być w stanie zrobić poniżej.

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

check to odpowiedź dla bardziej w przykładach głębokość https://stackoverflow.com/a/4556007/1248536

Powiązane problemy