イニシャライザ データベースにアクセスする必要があるときに実行されるため、アプリの起動時にデータベースを作成する場合は、次のいずれかを使用します:
context.Database.Initialize(true); // true に設定すると、既に実行されている場合でも初期化子が実行されます。 context.Database.Create()
プレ>http://msdn.microsoft.com/en-us/library/system.data.entity.database.initialize(v=vs.103).aspx
CreateDatabaseIfNotExists データベースが存在しない場合にのみ、データベースを再作成し、必要に応じてデータを再シードする IDatabaseInitializer の実装。データベースをシードするには、派生クラスを作成して Seed メソッドをオーバーライドします。
Database.SetInitializer
プレ>(new CreateDatabaseIfNotExists ()); http://msdn.microsoft.com/ en-us/library/gg679221(v=vs.103).aspx
DropCreateDatabaseIfModelChanges データベースの作成後にモデルが変更された場合にのみ、データベースを削除、再作成、および必要に応じてデータを再シードする IDatabaseInitializer の実装。これは、店舗モデルのハッシュを作成時にデータベースに書き込み、そのハッシュを現在のモデルから生成されたものと比較することによって実現されます。データベースをシードするには、派生クラスを作成して Seed メソッドをオーバーライドします。
Database.SetInitializer(新しい DropCreateDatabaseIfModelChanges());
http://msdn.microsoft.com/ en-us/library/gg679604(v=vs.103).aspx
DropCreateDatabaseAlways
アプリケーション ドメインでコンテキストが初めて使用されるときに、常にデータベースを再作成し、必要に応じてデータを再シードする IDatabaseInitializer の実装。データベースをシードするには、派生クラスを作成して Seed メソッドをオーバーライドします。
Database.SetInitializer
プレ>(new DropCreateDatabaseAlways ()); http://msdn.microsoft.com/ en-us/library/gg679506(v=vs.103).aspx
移行を見ることをお勧めします 追跡したい場合は、DB に加えた変更を以前の状態に戻します http ://msdn.microsoft.com/hr-hr/data/jj591621 .
更新
context.Database.Initialize(true);
プレ>MVC アプリケーションの場合、セクションを
Application_Start()
に追加します Global.asax のメソッドprotected void Application_Start() { Database.SetInitializer
(new DropCreateDatabaseAlways ()); // モデルの変更時にデータベースの初期化を強制します。 using (var context=new MyContext()) { context.Database.Initialize(force:true); } }コード> プレ> また、カスタム初期化子を使用することもできます:
public class MyDbInit :DropCreateDatabaseAlways
プレ>{} そして使用
Database.SetInitializer(new MyDbInit());
プレ>アップデート 2
DeleteDBOnEveryRequest という新しい空の MVC4 アプリケーションを作成します .Global.asax Application_start に以下を追加
protected void Application_Start() {AreaRegistration.RegisterAllAreas(); WebApiConfig.Register(GlobalConfiguration.Configuration); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); Database.SetInitializer
(新しい DropCreateDatabaseAlways ()); using (var context =new BlogContext()) { context.Database.Initialize(force:true); } }コード> プレ> DatabaseController という名前の新しいコントローラーを作成します
アクセス DB を削除して Recreated にリダイレクトするアクション 以前に削除されたので、DB を作成する場所からのアクション。
namespace DeleteDBOnEveryRequest.Controllers{ public class DatabaseController :Controller { public ActionResult Access() { using (var context =new BlogContext()) { context.Database.Delete(); } return RedirectToAction("再作成"); } public ActionResult Recreated() { using (var context =new BlogContext()) { context.Database.Initialize(force:true);ビュー()を返します。 }}}コード> プレ>
これはあなたが望んでいたものですか?