【问题标题】:How do I index foreign keys using Fluent NHibernate and SchemaUpdate.Execute()?如何使用 Fluent NHibernate 和 SchemaUpdate.Execute() 索引外键?
【发布时间】:2009-11-23 23:51:33
【问题描述】:

Fluent NHibernate 中有没有一种方法可以指定外键应该被索引?

MS Sql Server 的默认配置不索引外键。我希望 NHibernate 模式生成/更新工具生成的模式来索引这些键。当我只使用HasMany 或HasManyToMany 方法时,不会创建此类索引。这甚至可以通过原始 XML 映射实现吗?

【问题讨论】:

  • 如果您不知道,默认情况下未索引外键的原因是可能导致应用程序性能的整体下降。这感觉就像在没有分析的情况下尝试优化。
  • Michael - 我不希望为模式中的每个 FK 执行此操作 - 仅在我知道我需要它的地方。我一点也不批评 MS Sql Server 默认不索引 FK 的事实。但是,我确实需要一些方法来索引必要的 FK。我希望,至少在最初,我可以使用 Fluent NHibernate 来做到这一点。

标签: c# sql-server nhibernate fluent-nhibernate


【解决方案1】:

我认为列映射元素上的“索引”属性就是您所追求的。如果您使用的是最新版本的 FNH,则可以将其设置为一对多,如下所示:

HasMany(x => x.Components)
       .KeyColumns.Add("ProductId", c => c.Index("someIndex");

相同的 API 尚不能用于多对多,但它正在开发中。

【讨论】:

  • 太棒了-谢谢-这就是我想要的。看起来我拥有的 FNH 版本(1.0 RTM)还没有该选项 - 这是否仅适用于必须从源代码构建的版本?
  • 您不必从源代码构建。下载页面有最新版本。修订版 595 应该有此更改。 fluentnhibernate.org/downloads
  • 好的 - 现在我看到了构建。我想我应该向下滚动几个像素,而不是点击我看到的第一个说下载的东西:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多