2009-09-24 34 views
2

我有兩個C#類,說ContainerItem,和一個單向關聯:NHibernate列表鍵列上的SQL索引?

class Container { 
    [...] 
    public IList<Item> Items {get;set;} 
} 

NHibernate的映射如下所示:

<class name="Container"> 
    [...] 
    <list name="Items" cascade="all-delete-orphan"> 
    <key column="ContainerId"/> 
    <index column="Position"/> 
    <one-to-many class="Item"/> 
    </list> 
</class> 

結果,NHibernate的(2.0.1)生成Item表中的ContainerId列。由於我通常從Container側導航此連接,因此我想在ContainerId列上放置SQL索引。 NHibernate似乎沒有爲此提供映射語法,或者至少它對我來說並不明顯。加速這一點的最佳方式是什麼?

我想避免必須在多處傳播,所以我寧願只更改映射文檔。有沒有辦法在NHibernate語法中做到這一點?我應該嵌入自定義SQL命令嗎?如果是這樣,怎麼樣?

回答

2

看看<database-object>映射;它將允許您創建任意索引,觸發器等,作爲模式創建過程的一部分。用法描述在this article

0

我不知道是否以及何時該改變,但它可以用做

<index> 
    <column name="Position" index="Positionindex" /> 
</index>