为实体框架代码优先应用程序添加索引的正确方法
本文关键字:索引 方法 添加 应用程序 框架 实体 代码 | 更新日期: 2023-09-27 18:18:53
我一直在研究如何在列上添加索引,当你首先使用实体框架代码时。
在我看来,有三种方法:- 在实际迁移中添加它们(在EF 4.2之后)
- 在EF 6.1中使用新的
IndexAttribute
- 直接为列添加索引
这两种方法我都不太喜欢,因为:
1:似乎很危险。有时您可能希望重置所有迁移并再次进行"初始设置"。那么你的索引可能会被删除。
此外,我认为它的透明度很小,隐藏得很好。
2:似乎是相当新的和有限的文档。不确定这是如何工作的?
3:重新创建数据库很危险。
所以我的问题是:如何在实体框架代码中添加索引?
-
在迁移中手动添加代码是可以的,但我不建议这样做。无论如何,你仍然需要更新你的模型,所以要正确迁移
-
是什么让你认为这是新的和未记录的?这绝对没有错。
-
绝对不要这样做。应该避免手动屏蔽数据库的诱惑。
-
你没有提到这一点,但你也可以使用流畅的语法,像这样:
modelBuilder .Entity<Company>() .Property(t => t.Name) .HasColumnAnnotation( "Index", new IndexAnnotation(new IndexAttribute("IX_Company_Name") { IsUnique = true }));