Let's just be clear, the only reason MigrateDatabase has to be static in this case is because you're calling it from a static method (Main). If instead MigrateDatabase was an instance method on a class, you could instantiate that class and call it
using System;
namespace OdeToFood
{
    public class Program
    {
        public static void Main(string[] args)
        {
            var migration = new Migration();
            migration.MigrateDatabase();
        }   
    }
    public class Migration
    {
        private void MigrateDatabase()
        {
          //.....
        }
    }
}
You could also put it as a instance method on Program if you're instantiating an instance of that class
using System;
namespace OdeToFood
{
    public class Program
    {
        public static void Main(string[] args)
        {
            var program = new Program();
            program.MigrateDatabase();
        }
        private void MigrateDatabase()
        {
          //.....
        }
    }
}