簡體   English   中英

如何從LINQ將Sql DateTime設置為null

[英]How to set Sql DateTime to null from LINQ

我有兩種情況需要將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;

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溢出異常。

那么如何傳遞null值

LINQ數據類中DOB成員的屬性

在此輸入圖像描述

他們中的許多人建議將自動生成值設置為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? 當前的問題是編譯器無法根據操作數計算出條件表達式的類型。

第二次嘗試的問題是您正在創建一個新的不可為空的DateTime值,即公元0001年1月1日。 您可以將其更改為:

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

請試試

if(dtp_dob.Checked )
{
   customer.DOB = DateTime.Parse(dtp_dob.Value.ToString("yyyy-MM-dd"));
}
else
{
   cstomer.DOB =null;
}

因為DOB可以為空,所以這段代碼會給你你想要的東西。 BTW我找不到像nullDateTime.Value這樣的東西

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM