asp.net mvcアプリケーションをホストする予定です。私はクライアントがコントローラのメソッドからシードメソッドを実行できるようにしたいと思っていました。コントローラからシードメソッドを実行する
これは私が今持っているものです。
public class Configuration : DbMigrationsConfiguration<CUDbContext>
{
public Configuration()
{
AutomaticMigrationsEnabled = true;
AutomaticMigrationDataLossAllowed = true;
}
protected override void Seed(CUDbContext context)
{
// This method will be called after migrating to the latest version.
// You can use the DbSet<T>.AddOrUpdate() helper extension method
// to avoid creating duplicate seed data. E.g.
//if (context.Database.Exists()) return;
#region Some sample data
context.Persons.AddOrUpdate(
new Person
{
//some information
});
#endregion
public void RunSeed()
{
var context = new CUDbContext();
Seed(context);
}
}
そして、これは私は、コントローラからのシードメソッドを呼び出しています方法です:
public ActionResult Seed()
{
var db = new DAL.Migrations.Configuration {ContextType = typeof(CUDbContext)};
var migrator = new DbMigrator(db);
var scriptor = new MigratorScriptingDecorator(migrator);
var script = scriptor.ScriptUpdate(sourceMigration: null, targetMigration: null).ToString();
//Debug.Write(script);
migrator.Update();
return RedirectToAction("Index");
}
私のコントローラのメソッドがthis ポストに基づいています。
しかし、シードメソッドでコントローラをヒットしたときにデータベースが更新されません。
どのように動作するか提案します。クライアントはVisual Studioを使用してパッケージマネージャコンソールにアクセスし、update-databaseコマンドを実行することはできません。だから私はコントローラの方法からそれを行うことができるようにしたいと思います。
はまた、私は、コントローラでこれを試してみました、それが動作しませんでした:public ActionResult Seed()
{
var db = new DAL.Migrations.Configuration {ContextType = typeof(CUDbContext)};
db.RunSeed();
//var migrator = new DbMigrator(db);
//var scriptor = new MigratorScriptingDecorator(migrator);
//var script = scriptor.ScriptUpdate(sourceMigration: null, targetMigration: null).ToString();
////Debug.Write(script);
//migrator.Update();
return RedirectToAction("Index");
}
、私が持っているものは何でもロジックがありますデータベースには作成されません。テーブルは – Cybercop