sqlentity-frameworkindexing

Create index with included columns in (old) Entity Framework 6 code-first configuration


So now that Indexes are available in latest beta version of Entity Framework 6.1 is it even possible to create an index in code first approach that is equal to this SQL statement?

CREATE NONCLUSTERED INDEX [Sample1]
ON [dbo].[Logs] ([SampleId],[Date])
INCLUDE ([Value])

Solution

  • Strictly speaking it has been always possible in Code First Migrations because you can run sql in a migration:

       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);
            }
        }
    

    But I realise that you are probably actually asking if you can create an index using the IndexAttribute introduced in 6.1, but with an Include column - the answer to that is "No"