0

私のNHibernateマッピングには、<database-object>MS SQL Server 2008のインデックスを定義する要素が含まれています。問題は、を呼び出したときにこのSQLがスキーマに含まれないことSchemaExport.Createです。他のすべてが作成されますが、インデックスはありません。

エンティティの1つは次のようになります。次に例を示します。

<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で何かが変更されてこれが実行できなくなったかどうかはわかりません。

方言は、設定ファイルの私の方言と一致します。

4

1 に答える 1

0

@OskarBerggrenのおかげで、私は別のフォーラムで答えを得ました。問題は、アセンブリ名(NHibernateこの場合は)が方言文字列内で指定されるべきではなかったことです。

だから、私がこれを変更したとき:

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

これに:

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

それは私の問題を修正しました。

于 2012-10-30T09:46:44.853 に答える