现在,随着Entity Framework 6.1的最新Beta版本中提供了索引功能,是否可以在Code First方法中创建与此SQL语句相等的索引呢?
CREATE NONCLUSTERED INDEX [Sample1]
ON [dbo].[Logs] ([SampleId],[Date])
INCLUDE ([Value])
现在,随着Entity Framework 6.1的最新Beta版本中提供了索引功能,是否可以在Code First方法中创建与此SQL语句相等的索引呢?
CREATE NONCLUSTERED INDEX [Sample1]
ON [dbo].[Logs] ([SampleId],[Date])
INCLUDE ([Value])
严格来说,在Code First Migrations中一直存在这种可能性,因为您可以在迁移中运行SQL:
public partial class AddIndexes : DbMigration
{
private const string IndexName = "IX_LogSamples";
public override void Up()
{
Sql(String.Format(@"CREATE NONCLUSTERED INDEX [{0}]
ON [dbo].[Logs] ([SampleId],[Date])
INCLUDE ([Value])", IndexName));
}
public override void Down()
{
DropIndex("dbo.Logs", IndexName);
}
}
但我意识到你可能实际上是在问是否可以使用6.1中引入的IndexAttribute创建一个包含Include列的索引 - 答案是“不行”
__MigrationHistory
中的Model
没有任何区别,所以Database.CompatibleWithModel
在此迁移之前和之后都将返回true
。因此,您可能会意外地运行未索引的数据库。 - AakashM