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