在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