private void GenerateIncludedColumnsIndex(CreateIncludedColumnsIndexOperation includedColumnIndexOperation)
 {
     using (var writer = Writer())
     {
         writer.Write("CREATE ");
         if (includedColumnIndexOperation.IsUnique)
         {
             writer.Write("UNIQUE ");
         }
         if (includedColumnIndexOperation.IsClustered)
         {
             writer.Write("CLUSTERED ");
         }
         writer.Write("INDEX ");
         writer.Write(Quote(includedColumnIndexOperation.Name));
         writer.Write(" ON ");
         writer.Write(Name(includedColumnIndexOperation.Table));
         writer.Write("(");
         writer.Write(includedColumnIndexOperation.Columns.Join(Quote, ", "));
         writer.Write(")");
         writer.Write("INCLUDE");
         writer.Write("(");
         writer.Write(includedColumnIndexOperation.IncludedColumns.Join(Quote, ", "));
         writer.Write(")");
         Statement(writer);
     }
 }
        public static void CreateIncludedColumnsIndex(
            this DbMigration migration,
            string table,
            string index,
            IList <string> columns,
            IList <string> includedColumns,
            bool isUnique    = false,
            bool isClustered = false
            )
        {
            var op = new CreateIncludedColumnsIndexOperation
            {
                Table           = table,
                Name            = index,
                Columns         = columns,
                IncludedColumns = includedColumns,
                IsUnique        = isUnique,
                IsClustered     = isClustered
            };

            ((IDbMigration)migration).AddOperation(op);
        }