gpt4 book ai didi

c# - 如何从 LINQ 将 Sql DateTime 设置为 null

转载 作者:太空狗 更新时间:2023-10-29 22:12:52 28 4
gpt4 key购买 nike

我有两种情况需要将 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 Dataclass 中 DOB 成员的属性

enter image description here

他们中的许多人建议将 Auto Generated Value 设置为 true 并且不插入任何值。没错,它适用于插入案例。

但现在假设,已经有一个客户条目,其中一些日期时间值设置为 DOB 字段。现在用户想要清除此值(删除生日),那么在这种情况下,我必须使用 UpdateOn 传递空值以清除相应客户行中归档的日期时间。

非常感谢您:)

最佳答案

您应该能够使用:

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;

注意 nullDateTime? 的转换。目前的问题是编译器无法根据操作数计算出条件表达式的类型。

第二次尝试的问题是您正在创建一个新的不可为 null 的 DateTime 值,即公元 0001 年 1 月 1 日。您可以将其更改为:

DateTime? nullDateTime = null;
customer.DOB = dtp_dob.Checked
? DateTime.Parse(dtp_dob.Value.ToString("yyyy-MM-dd"))
: nullDateTime;

关于c# - 如何从 LINQ 将 Sql DateTime 设置为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5685355/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com