Upgrade to Pro — share decks privately, control downloads, hide ads and more …

30分間Windows Phone 7のデータベースをちょしてみる

30分間Windows Phone 7のデータベースをちょしてみる

第26回 .NET 勉強会 / ヒーロー島で発表した内容です。

Windows Phone 7のローカルデータベース機能の概要になります。

Takuya Shibata

February 25, 2012
Tweet

More Decks by Takuya Shibata

Other Decks in Technology

Transcript

  1. 自己紹介 • H/N:おひげ兄者シバタ(素敵なおひげ) • Twitter: @stknohg • Blog : http://d.hatena.ne.jp/stknohg/

    • 札幌で働くSIerです。 2010年からCLR/Hのスタッフをやっています。 基本裏方。WP7は完全に趣味。 早くアプリ作らないとなぁ… • ちょす=北海道弁で『いじる』
  2. CLR/H • CLR/H • Community for Learning and Research in

    Hokkaido • http://clr-h.jp/ • 『clr-h』でググってください • 画像検索すると大体のイメージは掴める…かも • ちこたんがよしなに紹介してくれてるはず!
  3. 次回勉強会 • 第68回勉強会 データアクセステクノロジデイ • タイムテーブルは公式サイトで • 3/10 13:00-18:00 •

    @ マイクロソフト株式会社北海道支店 セミナールーム • USTあります • http://www.ustream.tv/channel/clr-h1
  4. アジェンダ 1. ローカルデータベース 2. LINQ to SQL 3. デモ 4.

    データベースの作成・削除 5. CRUD・Commit/Rollback 6. まとめ
  5. LINQ to SQL • SQLServer向けのORM • LINQクエリ式でデータアクセスを行う • IQueryable •

    LINQクエリ式から式木を解析、SQLクエリを発行している • 生SQLは使用不可 • データコンテキスト(後述)のLogプロパティから発行されてい るSQLを確認することは出来る
  6. LINQ to SQLを利用するには • 参照設定の追加 • System.Data.Linq • usingの追加 •

    System.Data.Linq • System.Data.Linq.Mapping • Microsoft.Phone.Data.Linq.Mapping
  7. テーブル • System.Data.Linq.Table<T> • クラスにTable属性を付けるとテーブルとして扱われる • System.Data.Linq.Mapping.TableAttribute • Name: マッピングする物理テーブル名を指定

    • プロパティにColumn属性を付けると列として扱われる • System.Data.Linq.Mapping.ColumnAttribute • IsPrimaryKey: 主キーか否かを指定 • IsDbGenerated: 値が自動生成されるか否かを指定 • DbType: 列の型情報を指定 • CanBeNull: NULL値を許可するか否かを指定 • Etc…
  8. CRUD処理 • CREATE(INSERT) • 新規登録するTableクラスのインスタンスを生成 • Table<T>.InsertOnSubmit()メソッド • READ(SELECT) •

    LINQクエリでデータを選択 • UPDATE • Table<T>の内容を直接変更 • DELETE • 削除するTableクラスのインスタンスを選択 • Table<T>.DeleteOnSubmit()メソッド
  9. Commit/Rollback • トランザクションの開始は自動 • 変更内容が後述のSubmitChangesまで保持される • TransactionScopeによる明示的なトランザクションは使えない • Commit •

    DataContext.SubmitChanges()メソッド • Rollback • 明示的なメソッドなし • SubmitChanges()に失敗した場合はデータは更新されない • DataContextの参照を消す?
  10. まとめ • Windows Phone OS 7.1からローカルデータベース (RDB)が扱える様になった • SQL Server

    Compact Edition(CE) • LINQ to SQLを使ってデータアクセスを行う • DataContext=データベース • Table<T>=テーブル • 生SQLは扱えない