sql >> データベース >  >> RDS >> Sqlserver

存在しないデータベースを常に初期化するようにコード ファーストを強制しますか?

    イニシャライザ データベースにアクセスする必要があるときに実行されるため、アプリの起動時にデータベースを作成する場合は、次のいずれかを使用します:

     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);ビュー()を返します。 }}}  

    これはあなたが望んでいたものですか?




    1. mysqlを使用してwhere句でアポストロフィを確認する方法

    2. 列番号はデータベースのパフォーマンスに影響を与えませんが、行数は影響を与えるというのは本当ですか?

    3. Psycopg2画像が見つかりません

    4. クエリでNULLを0に置き換える方法は?