2

这可能吗,也许有一个约定?我有数百个表和无数的关系,我希望所有外键都被索引,我不想不得不编码。

更新

在@Vadim 的帮助下,我能够做到这一点:

var fkIndexConvention = ConventionBuilder.Reference.Always(x =>
    x.Index(string.Format("ix{0}_{1}_{2}", x.Class.Name, x.Property.Name,
    Guid.NewGuid().ToString().Replace("-", string.Empty))));

...然后将其添加到我的流利配置中:

var fluent = Fluently.Configure(config)
    .Mappings(m => m.FluentMappings.Conventions.Add(fkIndexConvention));

......世界变得更美好了。

4

1 回答 1

2

我假设您正在谈论使用 hbm2ddl 工具和 SchemaExport。

您需要做的就是设置一个参考约定。由于IManyToOneInstance隐藏了外键,您应该能够将实例转换为IManyToOneInspector.

ConventionBuilder.Reference.Always(x => x.Index(((IManyToOneInspector)x).ForeignKey + "Index"));
于 2013-01-25T23:26:38.603 回答