2014-02-08 85 views
2

我有一個nullable float列在映射到Nhibernate的sql表中。此表類的屬性定義:nhibernate浮動問題與c中的sql浮點數#

public virtual float? floatColumn { get; set; } 

我有有

public float? anotherFloatPrprty { get; set; } 

我得到這個錯誤

類型System.Double不能分配給另一個類屬性System.Nullable`1 [System.Single] setter MyProject

與以下會話查詢

var j = session.CreateSQLQuery("SELECT floatColumn As anotherFloatPrprty from myTable") 

因此,我改變了表有該列爲非空,但我仍然得到以下錯誤。

{「類型的對象‘System.Double’不能被轉換爲類型‘System.Single’。」}

顯然,當我沒有在floatColumn任何值,我不沒有任何例外,但只要將一些值插入表中(範圍從0.01到1),我就會得到這些例外。

我如何正確NHibernate的

回答

1

映射可爲空浮在這種情況下,SQL關鍵字floatC#關鍵字float是混亂。因爲它們不匹配。

正如文件指出:SqlDbType Enumeration

Member name Description 
...   ... 
Float   Double. A floating point number within 
       the range of -1.79E +308 through 1.79E +308. 

同時檢查:

摘要:使用double

public virtual double? floatColumn { get; set; } 
+0

謝謝Radim。我已經閱讀了很多關於這個問題的文檔。似乎我沒有其他選擇,只能將sql列更改爲double。 – EagleFox

+0

你的意思是改變C#映射嗎?加倍?這對我來說很有意義。真。我會說這不應該是一個意外,對吧?無論如何。 NHBenrate祝你好運。偉大的工具;) –

+0

是的Radim。我改變了映射倍增,它的工作。雖然我不確定是否應該將sql表更改爲double。目前我還沒有改變它 – EagleFox