C#ExecuteQuery null值

时间:2010-01-22 12:44:00

标签: c# stored-procedures null 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:查询参数不能是System.Object类型。

经过一些阅读后,我发现ExecuteCommand不支持null参数,而规范断言它应该。

是否有人遇到此问题并找到了解决方法?

非常感谢

2 个答案:

答案 0 :(得分:4)

你试过了吗?

DBNull.Value

答案 1 :(得分:1)

您是否尝试过发送DBNull.Value或新Nullable<DateTime>()