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

再構築時に初期データを挿入するEntityFramework

    カスタムデータベース初期化子を作成し、Seedを上書きします メソッド

    public class MyContextInitializer
        : DropCreateDatabaseIfModelChanges<MyContext>
    {
        protected override void Seed(MyContext context)
        {
            context.ContactTypes.Add(new ContactType { DisplayName = "Home" });
            context.ContactTypes.Add(new ContactType { DisplayName = "Mobile" });
            context.ContactTypes.Add(new ContactType { DisplayName = "Office" });
            context.ContactTypes.Add(new ContactType { DisplayName = "Fax" });
    
            //EF will call SaveChanges itself
        }
    }
    

    次に、この初期化子を派生コンテキストMyContextに登録します :

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

    これは、Databaseの静的メソッドです。 クラスであり、アプリケーションの起動時にどこかで呼び出す必要があります。また、コンテキストの静的コンストラクターに入れて、最初のコンテキストインスタンスを作成する前にイニシャライザーが設定されていることを確認することもできます。

    static MyContext()
    {
        Database.SetInitializer<MyContext>(new MyContextInitializer());
    }
    

    ベース初期化子の代わりにDropCreateDatabaseIfModelChanges<T> DropCreateDatabaseAlways<T>から派生することもできます またはCreateDatabaseIfNotExists<T> それがあなたのニーズをよりよく満たすなら。




    1. MySQLで日付範囲の重複を確認する

    2. PDOでサーバー側のプリペアドステートメントをサポートしますか?

    3. SQLSTATE [23000]:有効な制約による整合性制約違反

    4. 自作、MySQL8のサポート