2010-02-25 6 views
3

SchemaExport semble fonctionner, mais SchemaUpdate échoue - le SchemaUpdate.Exceptions contient cet objet:SQL Server CE prend-il en charge la mise à jour du schéma avec NHibernate?

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

« La méthode est pas prise en charge » semble assez précise. –

Répondre

2

SQL Server Compact 4 prend en charge GetSchema - utiliser cette version au lieu de 3,5

0

OK, je pense qu'il est plus intéressant pourquoi mise à jour du schéma ne fonctionne pas avec la Compact Edition de MS SQL . La trace de pile implique que pas une méthode de NHibernate échoue, mais la méthode pour récupérer le schéma de base de données en cours. Lors de l'utilisation du dialecte pour MS SQL CE, un appel à System.Data.SqlServerCe.SqlCeConnection.GetSchema() doit être effectué dans la trace de la pile. Cependant, seul DbConnection.GetSchema() apparaît. Cela signifie deux choses:

  1. SqlCeConnection de classe ne l'emporte pas sur la mise en œuvre de cette méthode, d'où la mise en œuvre de la classe de base sera appelée. Cependant, la classe de base ne fait rien de plus que de lancer une exception NotSupportedException

  2. NHibernate ou le dialecte approprié pour MS SQL CE ne peut rien y faire. Donc, ce serait un problème à fixer par MS