在Fluent NHibernate中有一种方法可以指定外键应该被编入索引吗?如何使用Fluent NHibernate和SchemaUpdate.Execute()索引外键?
MS Sql Server的默认配置不索引外键。我希望由NHibernate模式生成/更新工具生成的模式来索引这些密钥。当我只使用HasMany
或HasManyToMany
方法时,不会创建这样的索引。这甚至可以用原始XML映射吗?
在Fluent NHibernate中有一种方法可以指定外键应该被编入索引吗?如何使用Fluent NHibernate和SchemaUpdate.Execute()索引外键?
MS Sql Server的默认配置不索引外键。我希望由NHibernate模式生成/更新工具生成的模式来索引这些密钥。当我只使用HasMany
或HasManyToMany
方法时,不会创建这样的索引。这甚至可以用原始XML映射吗?
我认为列映射元素上的'index'属性就是你所追求的。如果你对FNH的最新版本,您可以设置此为一到许多像这样:
HasMany(x => x.Components)
.KeyColumns.Add("ProductId", c => c.Index("someIndex");
同样的API还没有可用于许多一对多的,但它是它的方式。
如果您不知道,缺省情况下外键未被索引的原因是可能导致应用程序性能整体下降。这感觉就像没有分析的尝试优化。 – 2009-11-27 11:40:38
迈克尔 - 我不想为模式中的每个FK做这个 - 只在我知道我需要它的地方。我对MS Sql Server在默认情况下不会索引FK的事实毫不关心。但是,我确实需要一些方法来索引FKs。我宁愿,至少在最初的时候,我可以用Fluent NHibernate来做到这一点。 – Krazzy 2009-11-27 16:56:07