尝试配置 SQL Ce 数据库,并在 BuildSessionFactory()上获得以下异常。
相同的配置适用于 SQLite ,但我之前没有使用过NHICKnate的SQLCe。
有什么建议吗?
参考文献:
System.Data.SqlServerCe 3.5.1.0
FluentNHibernate 1.2
NHibernate 3.1
配置:
Dim fluentConfiguration = Fluently.Configure() _
.Database(MsSqlCeConfiguration.Standard.ConnectionString(connectionString)) _
.Mappings(Function(m) m.FluentMappings.AddFromAssemblyOf(Of InstrumentMap)() _
.Conventions.Add(FluentNHibernate.Conventions.Helpers.DefaultLazy.Never())) _
.ExposeConfiguration(Function(c) InlineAssignHelper(cfg, c)) _
.Cache(Function(c) c.UseQueryCache())
sessionFactory = fluentConfiguration.BuildSessionFactory()
DBConnection.cs中的异常,位于:
virtual public DataTable GetSchema(string collectionName) {
throw ADP.NotSupported();
}
发生了System.NotSupportedException 消息=不支持指定的方法。 来源= System.Data 堆栈跟踪: 在System.Data.Common.DbConnection.GetSchema(String collectionName) InnerException:
顺便说一句;如果省略.ExposeConfiguration(..)
,我会得到同样的异常答案 0 :(得分:1)
3.5不支持GetSchema,但SQL Server Compact 4.0支持GetSchema
答案 1 :(得分:0)
启动期间Hibernate调用GetSchema()。在其默认设置中,它会尝试确定数据库架构是否仍然适用。 如果架构不同,Hibernate能够更新架构 - 如果数据库能够报告其当前架构。 正如Erik已经说过:SQL CE无法报告当前架构...... 因此,这不是Fluent本身的问题。
所以我看到了以下替代方案:
摆脱异常 一个。抓住并忽略 湾防止Hibernate调用SchemaUpdate.Execute(), 但是SchemaExport.Create()(如果你想要创建你的模式) 查看代码时,最有可能在InlineAssignHelper中完成?!
摆脱SQL CE; - )
切换到SQL CE 4.0
此致 七