2017-12-12 13 views
1

それでは、私はSystem.Data.Entity.Databaseコードファーストマイグレーションを使用してデータベースを作成する:db.Initialize(...)とdb.Create()の間の操作の順序は何ですか?

よう
Database db = context.Database; 

への参照を持っており、それが存在しない場合、それはそれを更新し

  • 存在しない場合

    • が最初からデータベースを作成するために私がしたいとしましょう(移行スクリプトと同期してください)

    直接C#の土地(パッケージマネージャコンソールではない)から。

    私はそもそも

    if(!db.Exists()) 
    { 
        db.Create(); 
    } 
    

    を持っています。しかし、いつ私がdb.Initializeを使用する必要があるか分かりません。どのくらい正確にdb.Createとは違うのですか?誰か説明できますか?

    私はthe documentationを見たときにさらに、約Createデータベースの初期化 戦略を実行する前にこのメソッドを呼び出すと、その戦略を実行して無効にすることに注意してください

    と言います。

    これは何を意味しますか?

  • 答えて

    0

    は、4つの異なるデータベースの初期化戦略:(http://www.entityframeworktutorial.net/code-first/database-initialization-strategy-in-code-first.aspx)あなたがで戦略を設定することができます

    • CreateDatabaseIfNotExists
    • DropCreateDatabaseIfModelChanges
    • DropCreateDatabaseAlways
    • Custom DB Initializer

    あります

    Database.SetInitializer<MyContext>(new CreateDatabaseIfNotExists<MyContext>()); 
    

    この戦略は、データベースにSQLコマンドを初めてトリガーするとき、またはInitializeメソッドの呼び出し時に自動的に実行されます。あなたはそれを呼び出す必要はないので、とにかく呼び出されます。

    しかし、Createメソッドを呼び出すと、新しいDBを作成して初期化戦略を無視したいということです。

    関連する問題