Pergunta

Eu tenho algum código:

using (OAZISDBDataContext ctx = new OAZISDBDataContext())
            {                    
                IEnumerable<DBContactDetail> details = ctx.ExecuteQuery<DBContactDetail>("exec [dbo].[zna_contact] {0}, {1}",
                    "test", "19601023",
             }

No entanto, também quero passar valores vazios para o procedimento armazenado para que ele não os use.

Agora, com strings, isso é fácil, eu posso simplesmente passar por String.Empty e funcionará. No entanto, se eu quiser passar datas vazias, isso é um problema.

Eu obviamente tentei:

using (OAZISDBDataContext ctx = new OAZISDBDataContext())
            {                    
                IEnumerable<DBContactDetail> details = ctx.ExecuteQuery<DBContactDetail>("exec [dbo].[zna_contact] {0}, {1}",
                    "test", null,
             }

Mas isso não funciona, dá o erro:

System.Exception: Um queryparameter não pode ser do tipo System.Object.

Depois de algumas leituras, descobri que o ExeconCommand não suporta parâmetros nulos, enquanto a especificação afirma que deveria.

Alguém encontrou esse problema e encontrou uma solução alternativa?

Muitíssimo obrigado

Foi útil?

Solução

Você tentou:

DBNull.Value

Outras dicas

Você já tentou enviar DBNull.Value ou novo Nullable<DateTime>() ?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top