私が知る限り、方法はありません。私は以下の手法を用いてこの問題を解決しました。
あなたはSessionFactoryのは、あなたのセッションファクトリに追加の設定を適用するにはExposeConfigurationメソッドを使用して構築:
return Fluently.Configure()
.ProxyFactoryFactory(typeof(ProxyFactoryFactory))
.Database(MsSqlConfiguration.MsSql2008.ConnectionString(connectionString)
.Mappings(m =>
{
m.FluentMappings.AddFromAssemblyOf<Entities.BaseEntity>();
m.FluentMappings.Conventions.AddFromAssemblyOf<Entities.BaseEntity>();
})
.ExposeConfiguration((cfg => BuildDatabase(cfg)))
.BuildSessionFactory();
private static void BuildDatabase(Configuration cfg, IDatabaseConfiguration configurationManager)
{
cfg.AddXmlFile(@"Mappings\Hbm\Indexes.hbm.xml");
new SchemaExport(cfg).SetOutputFile(SchemaOutputFileName).Create(false, false);
}
実際Indexes.hbm.xmlファイルは次のようになります。
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<database-object>
<create>
CREATE NONCLUSTERED INDEX [Idx_TestRun_SerialNumber] ON [dbo].[TestRun]
(
[SerialNumber] ASC
)
</create>
<drop></drop>
</database-object>
</hibernate-mapping>
することができます任意の有効なSQL文を作成/削除文の中に入れます。これは、特定の順序で複数の列を持つ索引を作成する必要がある場合に便利です。
複数の行にまたがるコードを書式設定する場合は、各行の先頭に4つのスペースを付ける必要があります。バックティックは、1行のコードを対象としています。私の編集を参照してください。 – Amy