2013-06-12 262 views
-1

我工作在C#,WPF與MVVM和SQL Server存儲過程2008年存儲過程,空參數

我發送值的功能時,一個問題是執行存儲過程,其中,我從一張表格中獲得,在表格中可以留下一些空的空間。但是這些是一個類的對象,那麼訪問它們不應該是null。我離開代碼。

 public IEnumerable<Model.AsuntoModel> GetBusqueda(Model.PrioridadModel prioridad, Model.StatusAsuntoModel statusasunto, Model.DestinatarioModel destinatario, Model.SignatarioModel signatario, DateTime rangofecha, DateTime referenciadocumento) 
    { 
     ObservableCollection<Model.AsuntoModel> Busqueda = new ObservableCollection<Model.AsuntoModel>(); 
     using (var entity = new GestorDocumentEntities()) 
     { 

      try 
      { 
       entity.GetAsuntos(prioridad.IdPrioridad, statusasunto.IdStatusAsunto, destinatario.IdDestinatario, signatario.IdSignatario, referenciadocumento).ToList().ForEach(p => 
       { 
        Busqueda.Add(new Model.AsuntoModel() 
        { 
         IdAsunto = p.IdAsunto, 
         FechaCreacion = (DateTime)p.FechaCreacion, 
         FechaRecibido = (DateTime)p.FechaRecibido, 
         FechaDocumento = (DateTime)p.FechaDocumento, 
         Titulo = p.Titulo, 
         Descripcion = p.Descripcion, 
         Alcance = p.Alcance, 
         IdUbicacion = (long)p.IdUbicacion, 
         Ubicacion = new Model.UbicacionModel() 
         { 
          UbicacionName = p.CAT_UBICACION.UbicacionName 
         }, 
         IdInstruccion = (long)p.IdInstruccion, 
         Instruccion = new Model.InstruccionModel() 
         { 
          InstruccionName = p.CAT_INSTRUCCION.InstruccionName 
         }, 
         IdPrioridad = (long)p.IdPrioridad, 
         Prioridad = new Model.PrioridadModel() 
         { 
          PrioridadName = p.CAT_PRIORIDAD.PrioridadName 
         }, 
         IdStatusAsunto = p.IdStatusAsunto, 
         StatusAsunto = new Model.StatusAsuntoModel() 
         { 
          StatusName = p.CAT_STATUS_ASUNTO.StatusName 
         }, 
         FechaVencimiento = p.FechaVencimiento, 
         Folio = p.Folio 
        }); 
       }); 

      } 
      catch (Exception) 
      { 
       ; 
      } 
     } 
     return Busqueda; 
    } 

回答

0

你的SP可以被編碼治療NULL PARMS爲已任。

select * 
from table 
where (table.col = @COL or @COL IS NULL) 
and (table.col2 = @COL2 or @COL2 IS NULL) 
2

這是許多解決方案之一。

您只需讓SQL參數爲空,方法是給它們一個默認值。

E.g:

@ParamA = null 
@ParamB = null 
etc.. 

然後你管理這個SQL一邊看你已經收到了多少。
這樣,如果您不提供任何參數,您的查詢將具有一個值(在這種情況下爲null)。然後你可以測試它:

IF @ParamA IS NULL 
BEGIN 
-- You didn't give that param. 
END 
ELSE 
-- You gave a param