SQL Server CE是否支持使用NHibernate进行架构更新?

时间:2010-02-25 11:13:08

标签: nhibernate schema sql-server-ce

SchemaExport似乎有效,但SchemaUpdate失败 - SchemaUpdate.Exceptions包含此对象:

System.NotSupportedException: The method is not supported.
in System.Data.Common.DbConnection.GetSchema(String collectionName, String[] restrictionValues)
in NHibernate.Dialect.Schema.AbstractDataBaseSchema.GetTables(String catalog, String schemaPattern, String tableNamePattern, String[] types)
in NHibernate.Tool.hbm2ddl.DatabaseMetadata.GetTableMetadata(String name, String schema, String catalog, Boolean isQuoted)
in NHibernate.Cfg.Configuration.GenerateSchemaUpdateScript(Dialect dialect, DatabaseMetadata databaseMetadata)
in NHibernate.Tool.hbm2ddl.SchemaUpdate.Execute(Action`1 scriptAction, Boolean doUpdate)

2 个答案:

答案 0 :(得分:2)

SQL Server Compact 4支持GetSchema - 使用此版本而不是3.5

答案 1 :(得分:0)

好的,我认为更感兴趣为什么架构更新不适用于MS SQL的Compact Edition。

堆栈跟踪意味着NHibernate的方法不会失败,而是检索当前数据库模式的方法。 在MS SQL CE中使用方言时,实际上应该在堆栈跟踪中调用System.Data.SqlServerCe.SqlCeConnection.GetSchema()。但是,只显示DbConnection.GetSchema()。这意味着两件事:

  1. 类SqlCeConnection不会覆盖此方法的实现,因此将调用基类的实现。但是,基类只会抛出NotSupportedException

  2. NHibernate或适合MS SQL CE的方言无能为力。因此,这将是一个由MS

  3. 修复的问题