NHibernate SchemaExport не создает индексы

Мои сопоставления NHibernate включают в себя <database-object> элемент для определения индексов для MS SQL Server 2008. Проблема в том, что этот SQL не включается в схему при вызове SchemaExport.Create, Все остальное создается, но индексов нет.

Например, одна из сущностей выглядит так:

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">

  <class xmlns="urn:nhibernate-mapping-2.2" 
      name="MyApp.Entities.SomeEntity, MyApp.Entities" table="SomeEntity">

    <!- -->

  </class>

  <database-object>
    <create>
      CREATE INDEX [Idx_SomeEntityIndex] ON [SomeEntity] 
          ([Field1] ASC, [Field2] ASC) INCLUDE ( [Field3], [Field4], [Field5])
      CREATE STATISTICS [Stat_SomeEntityStat] ON [SomeEntity] 
          ([Field1], [Field2])
    </create>
    <drop>
      DROP INDEX [Idx_SomeEntityIndex] ON [SomeEntity]
      DROP STATISTICS [Stat_SomeEntityStat]
    </drop>
    <dialect-scope name="NHibernate.Dialect.MsSql2008Dialect, NHibernate"/>
  </database-object>

</hibernate-mapping>

Проблема в том, что раньше это работало (возможно, до перехода с NH2 на NH3), и я не уверен, что что-то изменилось в NHibernate, что мешает этому выполнить.

Диалект соответствует моему диалекту в файле конфигурации.

1 ответ

Решение

Благодаря @OskarBerggren я получил ответ на другом форуме. Проблема была в том, что название сборки (NHibernateв данном случае) не должно быть указано внутри строки диалекта.

Итак, когда я изменил это:

<dialect-scope name="NHibernate.Dialect.MsSql2008Dialect, NHibernate"/>

к этому:

<dialect-scope name="NHibernate.Dialect.MsSql2008Dialect"/>

это исправило мои проблемы.

Другие вопросы по тегам