C # ExecuteQuery нулевое значение - PullRequest
2 голосов
/ 22 января 2010

У меня есть код:

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

Однако я также хочу иметь возможность передавать пустые значения в хранимую процедуру, чтобы она просто не использовала их.

Теперь со строками это легко, я могу просто передать String.Empty, и он будет работать. Однако, если я хочу пропустить пустые даты, это проблема.

Я явно пытался:

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

Но это не работает, выдает ошибку:

System.Exception: параметр запроса не может иметь тип System.Object.

После некоторого прочтения я обнаружил, что ExecuteCommand не поддерживает нулевые параметры, хотя спецификация утверждает, что должна.

Кто-нибудь сталкивался с этой проблемой и нашел обходной путь?

Большое спасибо

Ответы [ 2 ]

4 голосов
/ 22 января 2010

Вы пробовали:

DBNull.Value
1 голос
/ 22 января 2010

Вы пытались отправить DBNull.Value или новый Nullable<DateTime>()?

...