C# 如何使用codefirst迁移更快地在controller中手动生成数据库表?

C# 如何使用codefirst迁移更快地在controller中手动生成数据库表?,c#,asp.net,asp.net-mvc,ef-code-first,entity-framework-migrations,C#,Asp.net,Asp.net Mvc,Ef Code First,Entity Framework Migrations,我首先使用C#和MVC代码启动了一个定制CMS。我添加了一个名为Setup的控制器,在Setup控制器操作GenrateDatabase中,我得到DatabaseName初始目录用户Id和数据库密码,然后生成数据库连接字符串并在web.config中更新它,并在下面的代码中运行seed方法 [HttpPost] [ValidateAntiForgeryToken] public ActionResult GenrateDatabase([Bind(Include = "D

我首先使用C#和MVC代码启动了一个定制CMS。我添加了一个名为Setup的控制器,在Setup控制器操作GenrateDatabase中,我得到DatabaseName初始目录用户Id和数据库密码,然后生成数据库连接字符串并在web.config中更新它,并在下面的代码中运行seed方法

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult GenrateDatabase([Bind(Include = "DataSource,InitialCatalog,UserId,Password")] Database database)
    {
        if (ModelState.IsValid)
        {
            if (database.GenrateDatabase())
            {
                return RedirectToAction("Register");
            }
        }
        ModelState.AddModelError("", "Mmm, something went wrong, Please check your data and try again.");
        return View(database);
    }
我的数据库类是:

public class Database
{
    [Required]
    public string DataSource { get; set; }

    [Required]
    public string InitialCatalog { get; set; }

    [Required]
    public string UserId { get; set; }

    [Required]
    public string Password { get; set; }

    private ApplicationDbContext db = new ApplicationDbContext();

    //$"Data Source={DataSource};Initial Catalog={InitialCatalog};User Id ={UserId}; Password = {Password};";
    private string ConnectionString => $"Data Source=.;Initial Catalog=Store;Integrated Security=SSPI";

    public bool GenrateDatabase()
    {
        var configuration = WebConfigurationManager.OpenWebConfiguration("~");
        var section = (ConnectionStringsSection)configuration.GetSection("connectionStrings");
        section.ConnectionStrings["goomooshCNSdb"].ConnectionString = ConnectionString;
        configuration.Save();
        return (GenrateTables()) ? true : false;
    }

    private bool GenrateTables()
    {
        if (db.Database.Exists())
        {
            //var configuration = new DbMigrationsConfiguration();
            Migrations.Configuration configuration = new Migrations.Configuration();
            configuration.ContextType = typeof(ApplicationDbContext);
            var migrator = new DbMigrator(configuration);
            migrator.Configuration.TargetDatabase = new DbConnectionInfo(ConnectionString, "System.Data.SqlClient");
            var migrations = migrator.GetPendingMigrations();
            if (migrations.Any())
            {
                var scriptor = new MigratorScriptingDecorator(migrator);
                var script = scriptor.ScriptUpdate(null, migrations.Last());
                if (!string.IsNullOrEmpty(script))
                {
                    db.Database.ExecuteSqlCommand(script);
                    return true;
                }
            }
        }
        return false;
    }
}
当我运行我的项目并输入数据并提交表单时,所有代码都运行得很好,但问题是db.Database.ExecuteSqlCommand(script);花了太多的时间,可能10分钟后就完不成了

当我检查SQL Server上的数据库时,代码创建了所有表和所需的一切,但代码从不重定向到注册操作

如何像wordpress或其他CMS一样更快地创建此类和方法