我有個域實體類與屬性:NHibernate的:錯誤柱類型:發現浮子,預期雙精度
public virtual double? Result { get; set; }
該屬性被使用的NHibernate 3.2映射逐碼東西進行映射:
public class SampleResultMap : ClassMapping<SampleResult>
{
public SampleResultMap()
{
Id(c => c.Id,
map => map.Generator(Generators.Identity));
Property(c => c.Result, map =>
{
map.NotNullable(false);
});
// More properties, etc.
}
}
這工作正常,SQL Server 2008 R2表正確創建與數據類型的float。
然而,SchemaValidator.Validate
通話給出了這樣的錯誤:
NHibernate.HibernateException was unhandled
Wrong column type in Foo.dbo.SampleResult for column Result.
Found: float, Expected DOUBLE PRECISION
望着那調用SchemaExport.Create
產生有這樣的定義表的SQL:
create table SampleResult (
Id INT IDENTITY NOT NULL,
DateEnteredUtc DATETIME not null,
ElementId INT not null,
Unit INT not null,
ResultText NVARCHAR(50) null,
[Result] DOUBLE PRECISION null,
Detected BIT not null,
Qualifier NVARCHAR(10) null,
SampleId INT not null,
Deleted BIT not null,
primary key (Id)
)
從快速閱讀NHibernate 3.2的資源看起來驗證器正在比較「DOUBLE PRECISION」和「float」。
有沒有其他人看到過這個?我認爲這是一個錯誤,但我還沒有使用驗證器之前,所以想知道如果我做錯了什麼。
一開始你說你宣稱它是'double?'。那麼它是雙重還是浮動? – 2012-01-06 16:56:37
它是一個C#'double?',它存儲在SQL Server中作爲可爲空的'float'列;這些都是雙精度表示。我知道,這很讓人困惑,一個SQL Server'real'是一個C#'float',它們都是單精度值。 – gdoten 2012-01-06 17:55:54
任何解決方案?我遇到了同樣的問題... – mCasamento 2012-02-20 13:35:02