內一類,我宣佈一個屬性,把它叫做我不能得到一個空的雙?
public double? myDouble {get; set;}
然後,在我的代碼,我特意把它分配。
我嘗試將其保存到SQL Server,其中關聯的列是浮點數(對應於C#中的double)並且可以爲空。
然而,當我查詢表時,它總是顯示爲0 myDouble。
希望有人能幫助我。非常感謝。
內一類,我宣佈一個屬性,把它叫做我不能得到一個空的雙?
public double? myDouble {get; set;}
然後,在我的代碼,我特意把它分配。
我嘗試將其保存到SQL Server,其中關聯的列是浮點數(對應於C#中的double)並且可以爲空。
然而,當我查詢表時,它總是顯示爲0 myDouble。
希望有人能幫助我。非常感謝。
我會想象的兩件事情之一正在發生。或者a)你已經在SQL Server中的該字段上設置了一個默認約束(容易檢查SSMS),或者b)你將0賦值給代碼中的某處(這可以通過在Visual Studio中立即設置斷點來檢查你打電話給數據庫,然後回去)。
甚至不知道如何構建DAL(EF,ADO.NET等),很難給出更具體的建議。
是的,這個列上確實有一個約束,我沒有檢查。謝謝,加里.. – Minh
嘗試使用float,然後如果類型爲float。我不認爲這是真正導致問題的原因。
public float myDouble {get; set;}
SQL中的浮點數翻譯爲C#中的兩倍。我不知道爲什麼,但那是我學到的。謝謝你的努力,雖然,Chol .. :) – Minh
試試這個在保存到SQL代碼:
myDouble == null ? DBNull.Value : (double)myDouble;
您需要空在數據庫中存儲爲DBNull.Value。我希望這有助於:)
你能展示你的持久性邏輯嗎? –
如果您使用的是ADO.NET,它具有一個特殊值'DbNull.Value',它需要在數據庫中實際存儲'null'。這讓我絆倒了。然而,你需要展示更多的邏輯給任何人提供幫助,因爲你沒有展示如何從C#映射到SQL。 – Guvante
因此,在爲數據庫保存值時遇到問題,但不顯示相關代碼。此行爲在問題的關閉原因之間列出 – Steve