2010-01-22 1 views
2

У меня есть некоторый код:C# ExecuteQuery нулевое значение

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: A queryparameter can't be of type System.Object.

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

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

Благодаря кучу

ответ

1

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