Mar*_*hal 5 c# linq null datetime linq-to-sql
我有两种情况需要将Sql中的DateTime字段设置为null.我使用C#和LINQ to SQL Classes.我读了很多关于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;
Run Code Online (Sandbox Code Playgroud)
customer.DOB是System.DateTime.
我尝试的是:
1)
customer.DOB = dtp_dob.Checked ? DateTime.Parse(dtp_dob.Value.ToString("yyyy-MM-dd")) : SqlDateTime.Null;
Run Code Online (Sandbox Code Playgroud)
但是这不会成功,因为SqlDateTime无法转换为System.DateTime.
2)
DateTime? nullDateTime = new DateTime();
customer.DOB = dtp_dob.Checked ? DateTime.Parse(dtp_dob.Value.ToString("yyyy-MM-dd")) : nullDateTime.Value
Run Code Online (Sandbox Code Playgroud)
在这种情况下,构建成功但它将抛出SqlDateTime溢出异常.
那么如何传递null值
LINQ数据类中DOB成员的属性

他们中的许多人建议将"自动生成值"设置为true,而不是插入任何值.没错,它适用于插入案例.
但现在假设已经存在一个客户条目,其中某个日期时间值设置为DOB字段.现在用户想要清除这个值(删除生日),然后在这种情况下我必须使用UpdateOn传递一个空值来清除相应客户行中的日期时间.
非常感谢你提前:)
Jon*_*eet 15
你应该可以使用:
Customer customer = new Customer();
customer.CustomerName = txt_name.Text;
customer.DOB = dtp_dob.Checked
? DateTime.Parse(dtp_dob.Value.ToString("yyyy-MM-dd"))
: (DateTime?) null;
Run Code Online (Sandbox Code Playgroud)
需要注意的演员null来DateTime?.当前的问题是编译器无法根据操作数计算出条件表达式的类型.
第二次尝试的问题是您正在创建一个新的不可为空的DateTime值,即公元0001年1月1日.您可以将其更改为:
DateTime? nullDateTime = null;
customer.DOB = dtp_dob.Checked
? DateTime.Parse(dtp_dob.Value.ToString("yyyy-MM-dd"))
: nullDateTime;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14584 次 |
| 最近记录: |