我正在尝试将以下代码行进行泛化(如果这甚至是一个词):
oCmd.CreateParameter("@Date", SqlDbType.DateTime, updateDate > DateTime.MinValue ? updateDate : SqlDateTime.Null);
第一个变化显然是SqlDbType.DateTime到DbType.DateTime,我该怎么处理SqlDateTime.Null?
如果我改为:
oCmd.CreateParameter("@Date", DbType.DateTime, updateDate > DateTime.MinValue ? updateDate : null);
我得到漂亮的小红色波浪形告诉我DateTime和null之间没有隐式转换。我似乎无法找到这样做的通用方法 - 这可能吗?
由于updateDate参数的源与这行代码之间不兼容,我不能只使用updateDate:
oCmd.CreateParameter("@Date", DbType.DateTime, updateDate);
通常,我们从调用代码收到的日期超出了SQL Server的有效日期范围,导致命令失败。因此必须进行检查 - 因此包含三元检查的原因。
我能看到的唯一方法就是突破多行,但我希望有人能够耍到他们的袖子,所以我可以把它保持为一条线。
提前干杯
答案 0 :(得分:3)
试试这个:
oCmd.CreateParameter("@Date", DbType.DateTime,
updateDate > DateTime.MinValue ? (object)updateDate : DBNull.Value);