如何使用Fluent NHibernate指定多列索引

时间:2010-11-06 21:36:35

标签: nhibernate fluent-nhibernate indexing

这里的目标是让我的完整数据库配置和模式生成由流畅的nhibernate处理。

有没有办法用Fluent nhibernate指定多列索引?

我知道您可以在单个属性/列上指定索引

像这样:

mapping.Map(x => x.ItemDt).Index("IX_DataTransferLog_ItemDt");

如何指定多列?

如果无法做到这一点,是否有办法将原始SQL语句添加到将在创建/更新架构后运行的配置中?

1 个答案:

答案 0 :(得分:13)

在XML映射中,这可以通过向需要在索引中的所有属性添加具有相同名称的索引来实现:

<property name="Name" index="MyIndex" />
<property name="RunTimeInMinutes" index="MyIndex" />

不幸的是我没有任何目前使用Fluent NHibernate的项目,我可以对此进行测试,但我认为这在Fluent NHibernate中的工作方式相同:

mapping.Map(x => x.Name).Index("MyIndex");
mapping.Map(x => x.RunTimeInMinutes).Index("MyIndex");

如果这不起作用,您可以在映射中添加database-object中创建索引所需的原始SQL。当使用SchemaExport创建数据库时,NHibernate将执行SQL。我不知道是否有用于映射数据库对象的Fluent版本,但您可以使用XML映射database-object并将映射文件添加到Fluent NHibernate的配置中。