2015-05-21 52 views
1

內一類,我宣佈一個屬性,把它叫做我不能得到一個空的雙?

public double? myDouble {get; set;} 

然後,在我的代碼,我特意把它分配。

我嘗試將其保存到SQL Server,其中關聯的列是浮點數(對應於C#中的double)並且可以爲空。

然而,當我查詢表時,它總是顯示爲0 myDouble。

希望有人能幫助我。非常感謝。

+2

你能展示你的持久性邏輯嗎? –

+1

如果您使用的是ADO.NET,它具有一個特殊值'DbNull.Value',它需要在數據庫中實際存儲'null'。這讓我絆倒了。然而,你需要展示更多的邏輯給任何人提供幫助,因爲你沒有展示如何從C#映射到SQL。 – Guvante

+0

因此,在爲數據庫保存值時遇到問題,但不顯示相關代碼。此行爲在問題的關閉原因之間列出 – Steve

回答

2

我會想象的兩件事情之一正在發生。或者a)你已經在SQL Server中的該字段上設置了一個默認約束(容易檢查SSMS),或者b)你將0賦值給代碼中的某處(這可以通過在Visual Studio中立即設置斷點來檢查你打電話給數據庫,然後回去)。

甚至不知道如何構建DAL(EF,ADO.NET等),很難給出更具體的建議。

+0

是的,這個列上確實有一個約束,我沒有檢查。謝謝,加里.. – Minh

0

嘗試使用float,然後如果類型爲float。我不認爲這是真正導致問題的原因。

public float myDouble {get; set;} 
+0

SQL中的浮點數翻譯爲C#中的兩倍。我不知道爲什麼,但那是我學到的。謝謝你的努力,雖然,Chol .. :) – Minh

0

試試這個在保存到SQL代碼:

myDouble == null ? DBNull.Value : (double)myDouble; 

您需要空在數據庫中存儲爲DBNull.Value。我希望這有助於:)

相關問題