我需要創建包含INCLUDE列的非聚簇索引(請參閱下面的<create>
標記)。這裏的映射文件:使用nhibernate映射文件創建具有「包含」列的封面索引
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="MyApp" assembly="MyApp">
<class name="User" table="user" >
<id name="Id" type="Guid" column="user_id">
<generator class="guid.comb"/>
</id>
<property name="Name" column="name" not-null="true" />
<property name="Phone" column="phone" />
<property name="Zipcode" column="zipcode" />
</class>
<database-object>
<create>
CREATE NONCLUSTERED INDEX [IX_user_zipcode_id]
ON User (Zipcode)
INCLUDE (Name, Phone)
</create>
<drop>
DROP INDEX IX_user_zipcode_id
</drop>
<dialect-scope name="NHibernate.Dialect.MsSql2000Dialect"/>
<dialect-scope name="NHibernate.Dialect.MsSql2005Dialect"/>
<dialect-scope name="NHibernate.Dialect.MsSql2008Dialect"/>
</database-object>
</hibernate-mapping>
我遇到的問題是沒有創建索引。似乎沒有任何事情發生。這是我第一次使用<database-object>
,所以我可能在這裏做錯了什麼。
我猜INCLUDE是Sql Server的具體這是爲什麼方言範圍在那裏。我知道如何創建單列和多列索引,但這不是我想要的。我想在查詢的INCLUDE子句的用戶表部分的zipcode和所有其他列上使用單列索引。有沒有辦法使用映射文件或其他方式創建這種類型的索引?
這可能是一個長鏡頭,但不必指定每個列,而是查詢的INCLUDE部分中的索引...除了讓nhibernate將任何新列添加到索引作爲屬性添加到映射文件中。