为实体框架代码优先应用程序添加索引的正确方法

本文关键字:索引 方法 添加 应用程序 框架 实体 代码 | 更新日期: 2023-09-27 18:18:53

我一直在研究如何在列上添加索引,当你首先使用实体框架代码时。

在我看来,有三种方法:
  1. 在实际迁移中添加它们(在EF 4.2之后)
  2. 在EF 6.1中使用新的IndexAttribute
  3. 直接为列添加索引

这两种方法我都不太喜欢,因为:

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

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

2:似乎是相当新的和有限的文档。不确定这是如何工作的?

3:重新创建数据库很危险。

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

为实体框架代码优先应用程序添加索引的正确方法

  1. 在迁移中手动添加代码是可以的,但我不建议这样做。无论如何,你仍然需要更新你的模型,所以要正确迁移

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

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

  4. 你没有提到这一点,但你也可以使用流畅的语法,像这样:

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