.net Can';使用NHibernate创建SQL Server CE表时,请不要将精度和小数位数设置为小数

.net Can';使用NHibernate创建SQL Server CE表时,请不要将精度和小数位数设置为小数,.net,nhibernate,sql-server-ce,nhibernate-mapping,.net,Nhibernate,Sql Server Ce,Nhibernate Mapping,我使用NHibernate映射代码在服务器(SQLServer2008)和客户端(SQLServerCE3.5)上创建表 这一列 Property(x => x.Latitude, c => { c.Precision(10); c.Scale(8); c.NotNullable(fal

我使用NHibernate映射代码在服务器(SQLServer2008)和客户端(SQLServerCE3.5)上创建表

这一列

Property(x => x.Latitude, c =>
                       {
                         c.Precision(10); 
                         c.Scale(8); 
                         c.NotNullable(false);
                       });
在服务器上运行良好,可生成
十进制(10,8)


但是在SQL Server CE客户端上,它会生成一个
数字(19,0)
?我在这里的映射中做错了什么吗?我正在使用NHibernate 3.3.2。

在NHibernate Jira跟踪器中对此提出了一个问题

目前的解决方法是在DB中使用real type:

Property(x => x.Longitude, c =>
        {
            c.Column(x => x.SqlType("real"));
            c.NotNullable(false);
        });
        Property(x => x.Latitude, c =>
        {
            c.Column(x => x.SqlType("real"));                
            c.NotNullable(false);
        });

C#属性仍然是十进制的。

此问题现已解决(NHibernate 3.3.3) 详情可在此找到:

是否使用NHibernate.dialent.MsSqlCeDialect方言?是:configuration.SetProperty(NHibernate.Cfg.Environment.dialent,typeof(MsSqlCeDialect).AssemblyQualifiedName);SetProperty(NHibernate.Cfg.Environment.ConnectionDriver,typeof(SqlServerCeDriver).AssemblyQualifiedName);