EFコアデータ移行手順

概要

それは、変更データ表に来れば、開発では、方法の開発は最初のEFコードを使用するように、そして、どのようにそれを行うには?もちろん、新しいプロジェクトならば、それを解決するためにどのようにして、死ぬことを再生成するためにデータベースを削除し、その後、プロジェクトがオンラインになっている場合ので、データベースにすでにデータが含まれ、ライン上で再構築し、データベースを削除しますか?EFは、データ転送動作を提供します。どのように具体的には、この操作を行います。

データ移行手順

開発環境vs2017 + MySQLの

例えば、ウェブにはこちら。どのように特定の操作。

1、新しいWebアプリケーション。

次のようにAsp.Netコアサイトが見つかり、プロジェクト構造の変化はありますが、プロジェクト構造は次のようになります。

wwwrootには、右ここで見つけると、以下のサイトに移動し、前に分離されています。これは、元の構造のasp.net MVCプロジェクトに近いです。

2、インストールEF

使用Nugetは、以下の2つのパケットをインストール

Microsoft.EntityFrameworkCore

Microsoft.EntityFrameworkCore.Tools

Pomelo.EntityFrameworkCore.MySql

Toolsパッケージ、データ移行機能、データベースの更新操作。

3、テストクラスとデータベースコンテキストを追加します

システムを使用しました。
System.Collections.Genericを使用しました。
System.ComponentModel.DataAnnotationsを使用しました。
System.ComponentModel.DataAnnotations.Schemaを使用しました。
System.Linqのを使用しました。
System.Threading.Tasksを使用しました。

名前空間Wolfy.MigrationDemo.Models 
{publicクラスユーザー
    { 
        [キー] 
        パブリックint型同上{セット。取得する; } 
        パブリック文字列名{セット。取得する; } 
        公共のDateTime CREATETIME {セット。取得する; } = DateTime.Now。
        公共のDateTime ModifyTime {セット。取得する; } = DateTime.Now。
    } 
}

データベースコンテキスト

注:このパッケージはPomelo.EntityFrameworkCore.MySqlを追加する必要があります

Microsoft.EntityFrameworkCoreを使用しました。
システムを使用しました。
System.Collections.Genericを使用しました。
System.Linqのを使用しました。
System.Threading.Tasksを使用しました。
Wolfy.MigrationDemo.Modelsを使用しました。

名前空間Wolfy.MigrationDemo.Data 
{ 
    publicクラスあるMyContext:DbContext 
    { 
        公共DbSet <ユーザー>ユーザー{セット。取得する; } 
        保護オーバーライドボイドOnConfiguring(DbContextOptionsBuilder optionsBuilder)
          => optionsBuilder 
              .UseMySql(@ "サーバ= localhostの;データベース= migrationtest; UID =ルート; PWD = ABCD;"); 
    } 
}

4、データベースの移行を生成することにより

コンソール対Nugetでは、次のコマンドを入力します。

INIT-移行追加

フィギュア

初期化が成功した後、溶液中で、次のディレクトリが表示されます。

 注:コマンドが実行されると、中国は、JSONフォーマットエラーが生じているためと、新しいプロジェクト、好ましくは英語のディレクトリに、バージョン2.0の場合、または、そこに文字化けします。

データベースを生成

 

コマンドが成功すると、データベースを生成

データ移行テストを挿入した後

 

        公共IActionResultインデックス()
        { 
            使用して(あるMyContext DB =新しいあるMyContext())
            { 
                db.MyUsers.Add(新しいModels.User {NAME = "Wolfy"})。
                db.SaveChanges(); 
            } 
            )(表示を返します。
        }

 

二つは、統計を容易にするために、我々は、我々は、ユーザーの追加フィールドは、データ移行を通じて、フィールドを追加すると考えることができ、ユーザの年齢を必要とし、元のデータには影響しません。

図のエンティティクラス、次のように変更

 

    パブリッククラスユーザー
    { 
        [キー] 
        パブリックint型同上{セット。取得する; } 
        パブリック文字列名{セット。取得する; } 
        公共のDateTime CREATETIME {セット。取得する; } = DateTime.Now。
        公共のDateTime ModifyTime {セット。取得する; } = DateTime.Now。
        公共int型年齢{セット。取得する; } 
    }

移行コマンド

 

PM>アドオンの移行は、initに
このアクション、使用するには、Remove-移行を元に戻すには。
PM>更新とデータベースの初期化
移行「20170917062429_init」を適用します。
完了。
PMは>アドオンの移行はupdatedb 
このアクションを元に戻すには、使用には、Remove-移行。
updatedbのPM>アップデート・データベース
の移行「20170917063252_updatedb」を適用します。
完了。
PM>

データテーブルの変更を見ます

概要

この記事では、データの移行コード最初の方法の基本的な操作を紹介します。

 

転送します。https://www.imooc.com/article/27276

おすすめ

転載: www.cnblogs.com/jnm121/p/12558553.html