【发布时间】:2018-04-26 22:53:26
【问题描述】:
我有一个名为“TableA”的表。在此表中有两列(外键),称为“ColA”和“ColB”。我想创建两个索引。一个用于 ColA 和 ColB,另一个仅用于 ColB。 在 SQL 中,可以这样做:
CREATE NONCLUSTERED INDEX [IX_TableA_ColA_ColB] ON TableA
(
ColA ASC,
ColB ASC
)
CREATE NONCLUSTERED INDEX [IX_TableA_ColB] ON TableA
(
ColB ASC
)
在 Fluent nHibernate 中为两列创建一个索引我这样做:
TableA - 类型为 AutoMapping
ColA/ColBExpression - 类型为 Expression<Func<T, TRef>>
TableA.References(ColAExpression).Index(indexName);
TableA.References(ColBExpression).Index(indexName);
现在,如果我尝试为 ColB 设置另一个索引,我会尝试这样做:
TableA.References(ColBExpression).Index(otherIndexName);
问题是索引被覆盖而不是连接,我得到这样的映射:
<many-to-one class="ColB, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" foreign-key="Fk_TableA_TableB_ColB" name="ColB">
<column name="ColBId" index="IX_TableA_ColB" />
</many-to-one>
有没有办法使用 Fluent nHibernate 创建如下映射?
<many-to-one class="ColB, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" foreign-key="Fk_TableA_TableB_ColB" name="ColB">
<column name="ColBId" index="IX_TableA_ColB, IX_TableA_ColA_ColB" />
</many-to-one>
【问题讨论】:
标签: nhibernate fluent-nhibernate nhibernate-mapping