2015-05-21 58 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。我希望这有助于:)

相关问题