ASP.NET MVC5をいじってCodeFirstがなかなかいい感じなので
ConsoleApplicationで実行するメモ
まずはEntityFrameworkを追加します。
ツール→NuGetパッケージマネージャー→ソリューションのNuGetパッケージの管理
参照にして、EntityFrameworkで検索。
追加するプロジェクトを選択(ここではCodeFirstって名前にしてるのでそれにチェック)
そしてインストール
これで参照にEntityFrameworkが追加される。
まずは1対多のテーブルを作る。
Blogの記事に対し、コメントをつけるデータを格納する部分を作ります。
ひとまずmodelフォルダ作って格納しておきます。
model/Article.cs
namespace CodeFirst.model { class Comment { public int Id { get; set; } public string Name { get; set; } public string Body { get; set; } //リレーション(相手側が1なのでCollectionじゃない) public virtual Article Article { get; set; } } }
model/Comment.cs
namespace CodeFirst.model { class Comment { public int Id { get; set; } public string Name { get; set; } public string Body { get; set; } //リレーション(相手側が1なのでCollectionじゃない) public virtual Article Article { get; set; } } }
今回は、単純にConsoleApplicationで使うのをメモするだけなので、
NotNullとかの細かい部分は飛ばしていきます。
この2クラスは単なるプレーンなクラスなのでこれらとDBとをつなぐためのクラスを作ります。
model/BlogContext.cs
using System.Data.Entity; namespace CodeFirst.model { class BlogContext : DbContext { public DbSetArticles { get; set; } public DbSet Comments { get; set; } } }
■DBの準備と接続文字列
SQL ServerにDBを作ります。
SampleCodeDBって名前で作りました。
App.configに接続文字列を追加します。
nameには、先ほど作ったBlogContextを記載します。
接続文字は先ほど作ったDBの情報を記載してください。
■マイグレーションを実行する
ツール→NuGetパッケージマネージャー→パッケージマネージャーコンソール を実行。
PM> Enable-Migrations
これでMigrationsフォルダが作られ、Configuration.csファイルが作られます。
Seedメソッドにデータを書けば初期データを挿入することができますが、今回はProgram.csで普通に追加します。
そのまえにMigrationを行ってテーブルを作成します。
マイグレーションでまず覚えておくのはたった2つ。
Add-MigrationとUpdate-Database
まずは、Migrationのファイルを作ります。前回のマイグレーションから今回のマイグレーションまでの差分を作ります。
PM> Add-Migration Init
(Add-Migration Migration名)
問題なければMigrationsフォルダにMigrationファイルがつくられます。
yyyyMMdd********_マイグレーション名.cs で作られます
データベースに反映します。
PM> Update-Database
エラーがなければDBにテーブルが作られます。
リレーションも張られてます。
■データを挿入
ひとまず、何か簡単にデータを入れてみます。
Program.cs
using CodeFirst.model; using System.Collections.Generic; namespace CodeFirst { class Program { static void Main(string[] args) { Article article = new Article(); article.Body = "Body_A"; article.Title = "Title_A"; Listcomments = new List () { new Comment {Name = "Name_A1", Body = "Body_A1" }, new Comment {Name = "Name_A2", Body = "Body_A2" } }; article.Comment = comments; BlogContext db = new BlogContext(); db.Articles.Add(article); db.SaveChanges(); } } }
0 件のコメント:
コメントを投稿