【发布时间】:2011-04-16 08:34:10
【问题描述】:
我有两种情况需要将 Sql 中的 DateTime 字段设置为 null。我使用 C# 和 LINQ to SQL 类。我阅读了很多关于 stackoverflow 的问题,这些问题与我的问题相似,但我的问题仍然有些不同。
当我们插入新客户时。
对应代码:
Customer customer = new Customer();
customer.CustomerName = txt_name.Text;
customer.DOB = dtp_dob.Checked ? DateTime.Parse(dtp_dob.Value.ToString("yyyy-MM-dd")) : //send null here;
customer.DOB 是 System.DateTime。
我尝试的是:
1)
customer.DOB = dtp_dob.Checked ? DateTime.Parse(dtp_dob.Value.ToString("yyyy-MM-dd")) : SqlDateTime.Null;
但这不会成功,因为 SqlDateTime 无法转换为 System.DateTime。
2)
DateTime? nullDateTime = new DateTime();
customer.DOB = dtp_dob.Checked ? DateTime.Parse(dtp_dob.Value.ToString("yyyy-MM-dd")) : nullDateTime.Value
在这种情况下,构建成功,但会抛出 SqlDateTime 溢出异常。
那么如何传递空值
LINQ 数据类中 DOB 成员的属性
他们中的许多人建议将自动生成的值设置为 true,而不是插入任何值。没错,它适用于插入盒。
但现在假设,已经有一个客户条目,其中一些日期时间值设置为 DOB 字段。现在用户想要清除这个值(删除生日),那么在这种情况下,我必须使用 UpdateOn 传递一个空值来清除相应客户行中归档的日期时间。
提前非常感谢你:)
【问题讨论】:
-
它可以为空,你不能把它设置为
null吗? -
Customer.DOB应该是DateTime?而不是DateTime如果该列可以为空。
标签: c# linq linq-to-sql datetime null