EF6 防止不在外键上创建索引

Usm*_*bal 3 entity-framework ef-fluent-api

我正在使用EF6代码优先的方法来创建数据库。当我添加迁移和更新数据库时,它总是Non-cluster Index默认为表中的每个外键创建。

在此处输入图片说明

我的问题: EF6 是否有任何全局设置不能Non-Cluster index在外键上创建?

我已经搜索并找到了以下解决方案

解决方案 1:在更新数据库之前从迁移中删除索引行

解决方案 1 不适合我,因为我有很多表,而且我的表db已经创建好了。手动删除索引创建行需要很多时间。

此外,我也在使用fluent api是否有与此问题相关的任何选项?

Ako*_*agy 5

好吧,我认为这可能是一种“如果你只有一把锤子......”的情况。

我之前给出的答案有效(我支持它,因为它非常有趣而且很棒),但这可能不是最好的方法。

最近我检查了 EF 使用生成数据库的所有默认约定,并且有一个负责在 FK-s 上生成非聚集索引。只需完全删除该约定,问题就解决了:

 protected override void OnModelCreating(DbModelBuilder modelBuilder)
 {
   base.OnModelCreating(modelBuilder);

   // using System.Data.Entity.ModelConfiguration.Conventions;
   modelBuilder.Conventions.Remove<ForeignKeyIndexConvention>();
 }
Run Code Online (Sandbox Code Playgroud)