連載:ADO.NET Entity Framework入門

第2回 EDMにおける多対多関係とEntity Frameworkでのデータの取得/保存

WINGSプロジェクト 土井 毅 著/山田 祥寛 監修
2010/07/09
Page1 Page2 Page3 Page4

Entity Frameworkでのデータ保存/取得サンプル

 それでは、自動生成されたクラスを用いたサンプルを実装しよう。なお、Entity Frameworkでのデータのクエリについてはさまざまな方法があるため、詳細は次回説明することとし、今回はシンプルなデータ保存/取得について扱うものとする。

 Program.csファイル(C#の場合)、Module1.vbファイル(VBの場合)を開き、それぞれリスト3のようにソース・コードを記述する。

var container = new AddressBookContainer();

var entry = new Entry()
{
  Name = "Doi",
  Age = 30,
  TelNo = "03-0000-0000",
  MailAddress = "doi@hogehoge.com"
};

container.AddToEntries(entry);
container.SaveChanges();

var entries = from e in container.Entries select e;

foreach (var e in entries)
{
  Console.WriteLine(string.Format("{0} {1}歳 電話番号:{2}", e.Name, e.Age, e.TelNo));
}
Sub Main()
  Dim container = New AddressBookContainer

  Dim entry = New Entry With {
    .Name = "Doi",
    .Age = 30,
    .TelNo = "03-0000-0000",
    .MailAddress = "doi@hogehoge.com"
  }

  container.AddToEntries(entry)
  container.SaveChanges()

  Dim entries = From e In container.Entries Select e

  For Each e In entries
    Console.WriteLine(String.Format("{0} {1}歳 電話番号:{2}", e.Name, e.Age, e.TelNo))
  Next
End Sub
リスト3 Entryエンティティの作成/保存とデータの取得

最初にAddressBookContainerクラスのインスタンスを作成する。以後の操作はオブジェクト・コンテキストとなるこのインスタンスを介して行う

データの新規作成は、Entryクラスのコンストラクタを呼び出して行う。データベースへの操作が、エンティティ・クラスの操作として実現されていることに注目

新規作成したエンティティ・クラスのインスタンスを、オブジェクト・コンテキストのAddToEntriesメソッドを使ってEntryエンティティの集合に追加し、SaveChangesメソッドを使って変更内容をデータベースに反映する*2

LINQ to Entities(詳細は次回)を用い、Entryエンティティをすべて取得する

foreachループ(For Eachループ)により、取得したEntryエンティティの値を表示する

*2 SaveChangesメソッドはEntity Frameworkで加えられた変更内容をデータベースに反映するメソッド。AddressBookContainerクラスでは定義されていないが、継承元のObjectContextクラスで定義されている

 リスト3の実行結果は図11のようになる。前半で保存したデータを、後半で取得して表示している。


図11 リスト3の実行結果

まとめ

 ADO.NET Entity Framework入門の第2回として、EDMでの多対多関係の実現と、Entity Frameworkで自動生成されるクラスの詳細、そして短いながらも完結したデータ保存/取得サンプルを扱った。

 特にアソシエーションについては、シンプルなO/Rマッパーとは異なる、Entity Frameworkの特徴的な機能に触れる部分となるので、理解を深めてほしい。

 次回はEntity Frameworkを使ったクエリの詳細について紹介の予定である。End of Article

 

 INDEX
  ADO.NET Entity Framework入門
  第2回 EDMにおける多対多関係とEntity Frameworkでのデータの取得/保存
    1.多対多関係の実現
    2.EDMからデータベースの自動生成
    3.Entity Frameworkで自動生成されるクラス
  4.Entity Frameworkでのデータ保存/取得サンプル
 
インデックス・ページヘ  「ADO.NET Entity Framework入門」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間