为Entity Framework代码优先应用程序添加索引的正确方法?

时间:2015-10-22 13:14:03

标签: c# entity-framework entity-framework-6.1

当您使用Entity Framework代码优先时,我一直在研究如何在列上添加索引。

我认为,有三种方法:

  1. 在实际迁移中添加它们(在EF 4.2之后)
  2. 在EF 6.1中使用新的IndexAttribute
  3. 直接向列添加索引
  4. 我不太喜欢这两种方法:

    1:似乎风险很大。有时您可能希望重置所有迁移并进行初始设置"再次。然后您的索引可能会被删除。

    此外,我认为它很透明,隐藏得很好。

    2:看起来很新且有限的文档。不知道这有多好用吗?

    3:如果您重新创建数据库,则会很危险。

    所以我的问题是:如何在代码优先的实体框架中添加索引?

1 个答案:

答案 0 :(得分:5)

  1. 在迁移中手动添加代码是可以的,但我不推荐它。您仍需要更新模型,以便正确进行迁移

  2. 是什么让你认为这是新的和无证的?这绝对没有错。

  3. 绝对不要这样做。应避免手动修复数据库的诱惑。

  4. 你没有提到这个,但你也可以使用流利的语法,如下所示:

    modelBuilder 
        .Entity<Company>() 
        .Property(t => t.Name) 
        .HasColumnAnnotation( 
            "Index",  
            new IndexAnnotation(new IndexAttribute("IX_Company_Name")
            {
                IsUnique = true 
            }));