【发布时间】:2014-08-13 18:06:49
【问题描述】:
在 Fluent API 中,我们可以在字段上指定索引:
var indexAttr = new IndexAttribute("IX_EmployeeNumber")
{
IsClustered = true
};
Property(c => c.EmployeeNumber)
.HasColumnAnnotation("Index", new IndexAnnotation(indexAttr ))
.HasMaxLength(8)
.IsRequired();
在Add-Migration之后,我们会得到这个CreateIndex声明:
CreateIndex("dbo.Employees", "EmployeeNumber", clustered: true, name: "IX_EmployeeNumber");
在Update-Database之后,我们有一个这样的sql:
CREATE CLUSTERED INDEX [IX_EmployeeNumber] ON [dbo].[Employees]
(
[EmployeeNumber] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
我的问题是:如何按后代顺序创建此索引?比如:
CREATE CLUSTERED INDEX [IX_EmployeeNumber] ON [dbo].[Employees]
(
[EmployeeNumber] DESC
在CreateIndex中找不到相关参数。是否可以在 Code First 迁移中实现?
当然,我们知道我们可以使用DbMigration.Sql(...some sql statement...) 让一切正常工作。但是,我们如何使用CreateIndex() 获得想要的结果?
【问题讨论】:
标签: entity-framework ef-code-first entity-framework-migrations