Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.

Community Open Day 2013 JP - EF CodeFirst DEMO

1.951 visualizaciones

Publicado el

Community Open Day 2013 Osaka
EntityFramework & CodeFirst DEMO
by Savurou

Publicado en: Tecnología
  • Inicia sesión para ver los comentarios

Community Open Day 2013 JP - EF CodeFirst DEMO

  1. 1. Entity FrameworkでCode FirstをやってみようCommunity Open Day 2013サヴロウ
  2. 2. 自己紹介サヴロウ・医療系のシステム開発してます・コミュニティ“SQLWorld”にて活動を行っています。・SQLWorld5/21(火) SQLを書いてみよう(ハンズオン)7/20(土) 内容調整中・音楽ユニット「フライパンズ」のベース&アレンジ・ライブ予定5/12(日)高槻アクトアモーレ5/26(日)高槻アクトアモーレ6/16(土)神戸北野HAPPY LAURATwitter: savurou36
  3. 3. EntiryFrameworkって何?・ADO.NET Entity Framework(以降、EntityFramework、EF)とは、.NET Framework 3.5からADO.NETに追加された、新しい概念に基づくデータ・アクセス技術である。・最新バージョンは6 Alpha 3→NuGetで入手可能。
  4. 4. 先にデータモデルの説明を…アプリケーションで扱うデータをモデル化したもので、データベースのテーブルなどには依存しないモデル概念モデル論理モデル概念モデルをデータの表現形式にあわせて変換したもの*一般的にはリレーショナルデータベースが使われるので、テーブル、主キー外部キーなどに変換リレーショナルデータベースにあわせてインデックスの設計や、パーティション分割などを行う物理モデル概念モデルと論理モデルの違いは何?
  5. 5. 概念モデルと論理モデルの違いの例例)多対多のパターン一人の学生は複数の講義を受講し、一つの講義には複数の学生が受講する。概念モデル
  6. 6. 概念モデル論理モデル論理モデルに落とし込むには中間テーブルを作成する必要がある→インピーダンスミスマッチ
  7. 7. ORマッパーとは何が違う?ORマッパーの場合概念モデルEntityFrameworkの場合概念モデル概念モデル側に受講者エンティティを作成概念モデルはそのままでプログラミングすることが可能
  8. 8. EntityFramework概要概念モデル論理モデルマッピングEntityFrameworkに基づくデータアクセスアクセスの仕方・ LINQ to Entities→LINQ to SQLではない・通常のエンティティモデルとして→For Eachで回せるCSDLMSLSSDL概念モデルはどうやって作る?
  9. 9. DEMOEDMウィザード→ADO.NET Entity Data Modelの作成自動生成されたコードを見てみる→POCO(Plane Old CLR Objects)
  10. 10. EDMモデルの中身を見る・自動でコードが作られるが、以外にもプレーンなクラスができているEDMウィザードを使わずに、コードから書いていこう!コードファースト
  11. 11. コードファースト手順1(1)EntityFrameworkをインストール・[ツール]-[ライブラリパッケージマネージャー]-[パッケージマネージャーコンソール]で以下を入力Install-Package EntityFramework※Ver5.0.0がインストールされます。※最新版を入れたい方は最後に[-Pre]を入力
  12. 12. コードファースト手順2(2)POCOでエンティティモデルを作成(3)エンティティをデータベースに接続するコンテキストクラスを作成→System.Data.Entity.DbContext(4)実行
  13. 13. DEMO・NuGetでEntityFrameworkをインストール・POCOでエンティティモデルを作成・DbContextを作成・実行・データの検索と更新
  14. 14. アノテーション①カラムが作成されるルールは?・IDという名称はPKEYになる・他のエンティティへの参照があれば、基本FKEYになるある程度指定したい場合はアノテーションを使う
  15. 15. アノテーション②詳しくは・・・http://msdn.microsoft.com/ja-JP/data/jj591583・各プロパティの前に属性を書く<Key> PKEYになります<Column> カラム名を指定できます。<ForeignKey> 外部キーの指定ができます。<MaxLength> 最大文字数の指定ができます。<Required> Not Nullになります。<NotMapped> カラムを作りません。
  16. 16. アノテーション③詳しくは・・・http://www.atmarkit.co.jp/fdotnet/ef4basic/ef4codefirst03/ef4codefirst03_01.html・更なるカスタマイズをしたい場合は、Fluent API を使う。
  17. 17. データベースのマイグレーション①・仕様変更などで、既存のデータはそのままで、カラム追加やテーブル追加に対応(1)NuGetでインストール(2)ConfigurationファイルができるのでにするEnable-MigrationsAutomaticMigrationsEnabled = True
  18. 18. データベースのマイグレーション②(3)Configurationファイルに初期値を設定→親子関係のデータは親子関係のオブジェクトを作成して、親を入れる(4)DatabaseInitializerをセットする→アプリケーションのNew時に入れるのがベターかメモ:DbSetのFindの使い方
  19. 19. DEMO・クラス図の説明・NuGetでMigrationを有効にする・Configurationの設定・DatabaseInitializerの設定・データの追加・データの更新・Annotation・Enum・DbSetのFind
  20. 20. クラス図
  21. 21. クラス図(仕様変更バージョン)
  22. 22. 紹介できない数々の機能・非同期対応・ストアドプロシージャもCallできます・変更の追跡もできます・その他
  23. 23. リンク他・ADO.NET Team Bloghttp://blogs.msdn.com/b/adonet/・Entity Framework 4.1入門(@IT)http://www.atmarkit.co.jp/fdotnet/ef4basic/index/index.html#ef41・ADO.NET Entity Framework 4.1 における Code Firsthttp://msdn.microsoft.com/ja-jp/magazine/hh126815.aspx
  24. 24. 最後に・実用的か? → そろそろ使える!・使うなら? → 小規模プロジェクト!プロトタイプ!どんどんEntityFrameworkは進化していきます!
  25. 25. ご清聴ありがとうございました

×