概要
それは、変更データ表に来れば、開発では、方法の開発は最初の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