.net Can';使用NHibernate创建SQL Server CE表时,请不要将精度和小数位数设置为小数
我使用NHibernate映射代码在服务器(SQLServer2008)和客户端(SQLServerCE3.5)上创建表 这一列.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
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);