【问题标题】:NHibernate SchemaExport not creating indexesNHibernate SchemaExport 不创建索引
【发布时间】:2012-10-23 10:37:34
【问题描述】:

我的 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 中是否发生了一些变化,这会阻止它执行。

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

【问题讨论】:

    标签: .net nhibernate schemaexport


    【解决方案1】:

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

    所以,当我改变这个时:

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

    到这里:

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

    它解决了我的问题。

    【讨论】:

      猜你喜欢
      • 2015-09-21
      • 1970-01-01
      • 1970-01-01
      • 2011-07-01
      • 2011-08-31
      • 2011-03-28
      • 1970-01-01
      • 1970-01-01
      • 2010-11-04
      相关资源
      最近更新 更多