2009-09-24 70 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>