2013-06-12 4 views
-1

저장 프로 시저가 실행 어디 MVVM와 WPF 및 SQL Server의 저장 프로 시저가 2008 년저장 프로 시저, 빈 매개 변수

내가 함수의 값을 보내는 문제가, C#을하고 있어요 , 나는 양식에서 얻은 다음, 일부 필드를 비워 둘 수 있습니다. 그러나 이것들은 클래스의 객체이며, 그 객체에 접근하는 것은 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을 ANY로 처리하도록 코딩 될 수 있습니다.

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

여기에는 여러 가지 해결책 중 하나가 있습니다.

간단하게 SQL 매개 변수를 기본값으로 지정하여 Null 허용 할 수 있습니다.

는 예컨대 :

@ParamA = null 
@ParamB = null 
etc.. 

그런 다음 당신은 당신이받은 얼마나 많은 볼 수있는 SQL 측에서이를 관리 할 수 ​​있습니다.
이 방법으로 매개 변수를 입력하지 않으면 쿼리에 값 (이 경우 null)이 표시됩니다. 다음과 같이 테스트 할 수 있습니다.

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