このコードでNhibernateを使用してSQLServerCEのスキーマを作成する場合:
Fluently.Configure()
.Database(MsSqlCeConfiguration.Standard
.ConnectionString(c => c.Is("Data Source=" + file))
.Dialect<NHibernate.Dialect.MsSqlCeDialect>()
.Driver<NHibernate.Driver.SqlServerCeDriver>()
.ShowSql())
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<NHibernateSessionFactory>())
.ExposeConfiguration(BuildSchema)
.BuildSessionFactory();
private static void BuildSchema(Configuration config)
{
// new SchemaExport(config).Drop(false, true);
//new SchemaExport(config).Create(true, true);
//If DB File does not exists, create it.
if (!File.Exists(file))
{
Directory.CreateDirectory(Path.GetDirectoryName(databaseFileName));
SqlCeEngine engine = new SqlCeEngine("Data Source="+ file);
engine.CreateDatabase();
// this NHibernate tool takes a configuration (with mapping info in)
// and exports a database schema from it
new SchemaExport(config).Execute(false, true, false);
//FormulasDAO.AddDefaultFormulaCollection();
}
else
{
new SchemaUpdate(config).Execute(false, true);
}
}
このような例外が発生しました
SessionFactoryの作成中に、無効または不完全な構成が使用されました。詳細については、PotentialReasonsコレクションとInnerExceptionを確認してください。
内部例外は
アセンブリSystem.Data.SqlServerCeのIDbCommandおよびIDbConnection実装が見つかりませんでした。アセンブリSystem.Data.SqlServerCeがアプリケーションディレクトリまたはグローバルアセンブリキャッシュにあることを確認します。アセンブリがGACにある場合は、アプリケーション構成ファイルの要素を使用して、アセンブリのフルネームを指定します。
この問題のヘルプ。