Поддерживает ли SQL Server CE обновление схемы с помощью NHibernate? - PullRequest
3 голосов
/ 25 февраля 2010

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 ]

2 голосов
/ 09 января 2011

SQL Server Compact 4 поддерживает GetSchema - используйте эту версию вместо 3.5

0 голосов
/ 19 октября 2010

ОК, я думаю, что это более интересно , почему обновление схемы не будет работать с Compact Edition MS SQL.

Трассировка стека подразумевает сбой не метода NHibernate, а метода получения текущей схемы базы данных. При использовании диалекта для MS SQL CE на самом деле должен быть вызов System.Data.SqlServerCe.SqlCeConnection.GetSchema () внутри трассировки стека. Однако отображается только DbConnection.GetSchema (). Это означает две вещи:

  1. Класс SqlCeConnection не отменяет реализацию этого метода, поэтому будет вызвана реализация базового класса. Однако базовый класс не делает ничего, кроме как генерирует исключение NotSupportedException

  2. NHibernate или диалект, подходящий для MS SQL CE, ничего не может с этим поделать. Таким образом, эта проблема будет исправлена ​​MS

...