C#float,NHibernate,SQL Server 2012找到了错误的列类型实际预期的float

C#float,NHibernate,SQL Server 2012找到了错误的列类型实际预期的float,nhibernate,sql-server-2012,Nhibernate,Sql Server 2012,将SQL Server 2012与float列一起使用,我遇到了一个类似的问题,但对于C#single。但是,如果在自定义方言中将列类型注册为FLOAT(24),则会得到“find:FLOAT,Expected REAL” 简而言之,如果我不执行RegisterColumnType操作,它会找到float并需要REAL,如果执行RegisterColumnType操作,它会找到REAL并需要float 有人看到这个问题并解决了吗?在查看测试数据库上NHibernate生成的模式并阅读SQL se

将SQL Server 2012与float列一起使用,我遇到了一个类似的问题,但对于C#single。但是,如果在自定义方言中将列类型注册为FLOAT(24),则会得到“find:FLOAT,Expected REAL”

简而言之,如果我不执行
RegisterColumnType
操作,它会找到
float
并需要
REAL
,如果执行
RegisterColumnType
操作,它会找到REAL并需要float


有人看到这个问题并解决了吗?

在查看测试数据库上NHibernate生成的模式并阅读SQL server文档后,找到了我问题的答案


我的本地数据库有一列类型为
real
,生产数据库有一列类型为
float
real
是一个
FLOAT(24)
,而
FLOAT
(我从文档中了解到)实际上是
FLOAT(53)
。这意味着C#type应该是
double
,这意味着链接的问题回答了如何处理它。决定将数据库列更改为
real
,之后它可以正常工作,无需任何方言修改。

在查看测试数据库上NHibernate生成的架构并阅读SQL server文档后,找到了我问题的答案


我的本地数据库有一列类型为
real
,生产数据库有一列类型为
float
real
是一个
FLOAT(24)
,而
FLOAT
(我从文档中了解到)实际上是
FLOAT(53)
。这意味着C#type应该是
double
,这意味着链接的问题回答了如何处理它。决定将数据库列更改为
real
,之后它可以正常工作,无需任何方言修改。

第一段和第二段相互冲突。要使其正常工作,您需要将其注册为SQL Server的真正本机类型,而不是该类型的任何别名。我猜真正的本机类型是FLOAT(24),请参阅该类型的链接问题和解决方案。明天我会检查不同的类型和结果。第一段和第二段相互冲突。要使其正常工作,您需要将其注册为SQL Server的真正本机类型,而不是该类型的任何别名。我猜真正的本机类型是FLOAT(24),请参阅该类型的链接问题和解决方案。明天我会检查不同的类型和结果。