DVDの登録

それでは、データを追加するコードを見てみましょう。

データの追加を行うコード

private void btnAdd_Click(object sender, EventArgs e)
{
  //UnitOfWorkを取得
  using (LsUnitOfWork uow = _context.CreateUnitOfWork())
  {

//DVDを生成
Dvd d1 = new Dvd();
d1.Title = "2009年 宇宙の旅";
d1.InfoUrl = "http://travel2009.hoge.jp";
d1.Type = 1; //最新作

Dvd d2 = new Dvd();
d2.Title = "白雪姫と子豚たち";
d2.InfoUrl = "http://princess.hoge.jp";
d2.Type = 2; //子供向け

Dvd d3 = new Dvd();
d3.Title = "1980年 宇宙調査";
d3.InfoUrl = "http://space1980.hoge.jp";
d3.Type = 0; //一般(旧作)

//UnitOfWorkにオブジェクトを登録して保存
uow.Add(d1);
uow.Add(d2);
uow.Add(d3);
uow.SaveChanges();

} }

UnitOfWorkの取得

LightSpeedでデータを操作する場合、作業のまとまりごとにUnitOfWorkを使用します。そのため、LightSpeedContextクラスのCreateUnitOfWorkメソッドを呼び出してLsUnitOfWorkオブジェクトを取得します。UnitOfWorkは、データベースの接続や切断に関わる部分なので確実に破棄(Dispose)されるように、ここではusingステートメントで囲んでいます。

データの追加(INSERT)

エンティティの保存をするには、永続化したいエンティティをインスタンス化して、プロパティに値を設定します。そして、UnitOfWorkクラスのAddメソッドでエンティティを登録します。この段階ではデータベースには何の命令も送信されません。 ひと通りの処理が終わると最後にUnitOfWorkクラスのSaveChangesメソッドを呼び出します。そうすると、変更があったエンティティがチェックされ、ここでは3件のエンティティをデータベースに保存するINSERT文が送信されます。もしSaveChangesメソッドを呼びなさなければデータベースには何の変更も反映されません。

結果の確認

正しくデータが登録されたかテーブルを見てみましょう。

データの追加結果(Dvdの挿入)

DvdのIDが自動採番され正しく登録されていることが分かります。また、キーテーブルの値が更新されていることも分かります。