NHIBERNATE schemaexport未创建索引



我的nhibernate映射包括一个<database-object>元素来定义MS SQL Server 2008的索引。问题在于,当我调用SchemaExport.Create时,此SQL不会包含在架构中。其他一切都会创建,但没有索引。

例如:

<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中的某些东西是否会阻止此操作。

方言匹配我在配置文件中的方言。

感谢@oskarberggren,我在另一个论坛上得到了答案。问题是汇编名称(在这种情况下为NHibernate)不应在方言字符串中指定。

所以,当我更改它时:

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

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

它解决了我的问题。

最新更新