内一类,我宣布一个属性,把它叫做我不能得到一个空的双?
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