SlideShare a Scribd company logo
VSUG DAY 2012 Winter   (2012.12.15)

ADO.NET Entity Framework
歴史と最新情報

        井上大輔
    日本マイクロソフト株式会社
はじめに


• ゴール
   ADO.NET Entity Framework を使う上でのポイントを理解してください


• Level 300 くらい
  初心者向けではありません


• デモはコンソールアプリばかりです
   見た目にこだわりません

                   VSUG DAY 2012 Winter 2012.12.15
Agenda




         VSUG DAY 2012 Winter 2012.12.15
ADO.NET Entity Framework の今

          VSUG DAY 2012 Winter 2012.12.15
現在、主要なデータアクセステクノロジーの選択肢



.NET Framework
  ADO.NET DataSet
  LINQ to SQL
  ADO.NET Entity Framework(EF)




                    VSUG DAY 2012 Winter 2012.12.15
各テクノジーの比較(ザックリと・・・)
          N 階層   マルチ          チュー     データモデ 開発生産性 将来性                     総じて言えば・・・
          システム   DB 対応        ニング     ルの柔軟性 ・保守性
                                                                   成熟     機能的にも成熟、情報も豊富。細
ADO.NE
           ○        △          ○          △              △                かいチューニングが必要な業務
                              相対的に細
T                             部まで制御                                       アプリなどで有効。
DataSet                        出来る


                                                                   大きな進   基本はEFを使えないか検討すべ
           △         ×         △          △              △         化はなし   き。マイグレーションツールもあり。
LINQ to          SQL Server   相対的に
SQL                に特化        速度は低




           ○        ○          △          ○             ○          進化を継   生産性・保守性が高く、アジャイ
EF                                      概念モデル         相対的に良い       続      ルな開発現場で有効。Webなど
                                         を定義           ことが多い              ライトなアプリ開発に便利。




                                      VSUG DAY 2012 Winter 2012.12.15
ご参考
EF Supports Multiple Databases -
www.tinyurl.com/efproviders
 Oracle Data                             MySQL          Progress
 Provider for     Devart             Connector/NET     DataDirect
     .NET                                               Connect



   VistaDB       OpenLink              IBM (DB2,       Sybase SQL
                 Software            Informix, U2)      Anywhere


    Sybase        Phoenix
   Adaptive      Software              SQL Compact     Synergex
    Server       Solutions
  Enterprise
                     VSUG DAY 2012 Winter 2012.12.15
EF の進化




         EF 1                      EF 4                    EF 4.1, 4.2                      EF 4.3                          EF 5
•Included in.NET 3.5/VS   •Included in .NET 4/VS 2010    •Out of band release        •Out of band release          ・Out of band release
 2008 SP1                 •POCO                          •Available on NuGet         •Available on NuGet
•Database First                                                                                                    ・Available on NuGet
                          •Lazy Loading                  •Builds on .NET 4           •Builds on .NET 4
•Basic O/RM support       •FKs                           •Code First                 •Code First Migrations        ・Builds on .NET 4
                          •Testability                   •Simplified DbContext API   •Improved Database            ・Code First Migrations
                          •Model First                   •Semantic Versioning         Generation
                                                                                     •Code First & DbContext bug   ・Improved Database
                          •Customizable T4 Code-Gen
                                                                                      fixes                        Generation
                          •N-Tier
                                                                                                                   ・Code First & DbContext bug
                                                                                                                   fixes


    2008/08                                                                                                              2012/08


                                                   VSUG DAY 2012 Winter 2012.12.15
EF 1

インピーダンス ミスマッチ問題の解決
                                             プレゼンテーション層
 Database First
                                                      EF
 基本的な O/R マッパー                              ドメイン層



                                             データ層



                                             RDB




           VSUG DAY 2012 Winter 2012.12.15
EF 4
ドメイン駆動、N 階層システムの開発を
                                                           プレゼンテーション層
意識した機能強化
 Model First
     EDM から DB オブジェクトを生成                                           EF
     【概念モデル】-> 【論理モデル】の流れで開発が出来る                          ドメイン層
 Persistence Ignorance(PI)
     POCO(Plain-Old CLR Object)
     永続化技術(EFなど)に依存しない実装が可能
     他の技術への変更が容易になった                                      データ層
 Change Tracking
     自己追跡エンティティ(DataSet の DiffGram に相当)
     変更(CUD)履歴をエンティティが管理                                  RDB
     階層を跨ったエンティティの CRUD が容易になった
                         VSUG DAY 2012 Winter 2012.12.15
DEMO


       VSUG DAY 2012 Winter 2012.12.15
EF 4.1, 4.2

より迅速な開発を意識した機能強化                                              プレゼンテーション層

 Code First
  コードから DB や DB オブジェクトを生成                                                         EF
  テスト駆動開発やアジャイルな開発、
                                                                      public partial class Entry
                                                                      {
                                                              ドメイン層     public virtual int ID
                                                                         {
                                                                            get;

   プロトタイプの開発に有効                                                          }
                                                                            set;




  特に MVC などライトな Web アプリ開発に有効
  特徴
    •   POCO ベースのエンティティ                                       データ層
    •   CoC(Convention over Configuration)
        「規約は設定に勝る」がベースの開発
                                                              RDB


                            VSUG DAY 2012 Winter 2012.12.15
DEMO


       VSUG DAY 2012 Winter 2012.12.15
CoC(Convention over Configuration)

 「規約は設定に勝る」をベースにした実装
    クラス(単数形)は、同名のテーブル(複数形)にマッピングされる。
    プロパティは、同名のテーブル列にマッピングされる 。
    主キーは、Id、または<クラス名>Idという名前がデフォルトになる。
    など
 規約から逸脱する部分
  Annotation (System.ComponentModel.DataAnnotations)
     •   エンティティのプロパティに属性を指定
         •   Key、StringLength、ConcurrencyCheck、Required、Timestamp、DataMember、RelatedTo、MaxLength、
             StoreGenerated など多数

  Fluent API (System.Data.Entity.DbModelBuilder)
     •   エンティティ外部から指定(つまりエンティティ自体は POCO で実装可能)

                                  VSUG DAY 2012 Winter 2012.12.15
DEMO


       VSUG DAY 2012 Winter 2012.12.15
Entity Framework 4.3
機能強化とバグフィックス
 Code First Migration
   スキーマを更新した時のデータ移行に対応


 bug fixes
   GetDatabaseValues のバグ修正
   DbSet の名前に Unicode が使えなかったバグ修正




                    VSUG DAY 2012 Winter 2012.12.15
Code First Migration
 Automatic Migration
   自動マイグレーション
   自動化の対象
   •   プロパティやクラスの追加
   •   プロパティやクラス名称の変更
   •   プロパティやクラスの名称変更をせずに、カラムやテーブル名称の変更
   •   プロパティの削除

 Code-Based Migration
   任意のタイミングでマイグレーション
   データの投入、インデックス、ユニーク、デフォルト値の指定など細かい制御が
    可能

                        VSUG DAY 2012 Winter 2012.12.15
Code First Migration

 初期化(IDatabaseInitializer)の実装クラスの追加
    CreateDatabaseIfNotExists(Of TContext)
    DropCreateDatabaseAlways(Of TContext)
    DropCreateDatabaseIfModelChanges(Of TContext)




 コマンド
    Enable-Migrations / Add-Migration(Code-Base migration) / Update-Database




                               VSUG DAY 2012 Winter 2012.12.15
DEMO


       VSUG DAY 2012 Winter 2012.12.15
EF 5
追加機能
                                                                   マルチダイアグラム
   Enum
   Spatial types (Geography / Geometry)
   デザイナの改善                                                                enum
   Table-Valued Functions


パフォーマンスの向上
   Automatic query caching for LINQ
   LINQ parameter evaluation optimization                         ストアドプロシージャと
                                                    ハイライトとカラーリング   関数のバッチインポート
   Table-Per-Type query optimization
   Large model improvements

                              VSUG DAY 2012 Winter 2012.12.15
EF 4.0 と比べ 600% 近く性能が向上
                                Performance in warm execution of query based on key

             2500%



             2000%



             1500%
Time spent




             1000%



              500%



                0%
                        Handcoded     EF Raw SQL    EF Compiled Query    Entity SQL   LINQ to Entities   LINQ to SQL
                        ADO.NET
             .NET 4.0     100%          199%             262%              1518%          2314%            1650%
             .NET 4.5     100%          211%             269%               406%           412%            1350%


                                                   VSUG DAY 2012 Winter 2012.12.15
DEMO


       VSUG DAY 2012 Winter 2012.12.15
各開発手法の比較(ザックリと・・・)
                  DB 機能(SP、ビュー、       チューニング             開発、修正の      総じて言えば・・・
        アプローチ
                  など)のフル活用                               容易性

                       ○                     ○                △      リレーショナルモデルがある
         リレーショナ
Database                                                             程度決まっていれば DB 機
         ルモデルを先    相対的にDBの機能を                                相対的に
First                多く使える                                   1番面倒    能がフルに活用できるので
         に開発
                                                                     便利

                                             △                △      概念モデルがある程度決
                       △                                             まっていれば DB を意識しな
Model   概念モデルを
                                                                     い開発ができるので便利。
First   先に開発
                                                                     学術的には正しいが現場で
                                                                     使えるかは検証が必要。

                                             △                ○      モデルが固まってない段階
                       △                                             から俊敏に開発していく際に
Code    コードから先                                                       便利
First   に開発                                                          - テストファースト
                                                                     - アジャイルな開発
                                                                     - プロトタイプの開発

                           VSUG DAY 2012 Winter 2012.12.15        ※ 結構、好みが大きいかも・・
ADO.NET Entity Framework
の未来
         VSUG DAY 2012 Winter 2012.12.15
EF6 alpha 2


                     Apache 2.0 License



                     Code first custom conventions
                     非同期処理
                       • SaveChangesAsync(), ExecuteSqlCommandAsync(),
                         FindAsync(), SingleAsync(), ToListAsync()
                     Code First の ストアドプロシージャ対応(未)
                     Connection Resiliency (Retry) (未)
                     など多数の機能追加を予定


              VSUG DAY 2012 Winter 2012.12.15
DEMO


       VSUG DAY 2012 Winter 2012.12.15
要求、キュー、スレッド
                                           Web サーバー (IIS)
        要求 (Request)                                     スレッド (Thread)
                                                                         処理中 …
                            キュー (Queue)
                                                                         処理中 …

                                                                         処理中 …

                                                                  スレッド プール




      キュー (Queue) に入った要求 (Request) は、ユーザー (クライアント) からは
       、処理中の要求(Request) と同じように見えます
      要求とスレッドは、1 対 1 の関係ではありません。1 つのスレッドが、複数の
       要求を同時に処理することもあります
                       VSUG DAY 2012 Winter 2012.12.15
同期処理

                  スレッドが空くのを待機 . . .



                        I/O 処理を待機
                        (ネットワーク接続, ファイル接続, など)
                                                    要求
       スレッド

                                                 スレッド
                                                 プール




              VSUG DAY 2012 Winter 2012.12.15
非同期処理

    スレッドの有効活用による、
          高スループット、高スケーラブルな処理の実現


                                                要求

                                             スレッド
                                             プール




           VSUG DAY 2012 Winter 2012.12.15
EF Power Tools Beta 2

 既存 DB スキーマから
 Code First のクラスを自動生成

 Visual Studio の拡張機能として提供




                   VSUG DAY 2012 Winter 2012.12.15
DEMO


       VSUG DAY 2012 Winter 2012.12.15
Entity Framework のバージョンと機能

                       .NET/VS releases                        OOB releases
                                                                                  EF 6.0
                       EF 1.0      EF 4.0    EF 4.1, 4.2     EF 4.3    EF 5.0
                                                                                  Alpah
Provider Model
EntityClient
MetadataWorkspace    .NET 3.5 SP1 .NET 4.0    .NET 4.0     .NET 4.0   .NET 4.5   .NET 4.5
ObjectContext
EntityDataSource
                       VS 2008
                                  VS 2010      VS 2010     VS 2010    VS2012     VS 2012
Entity Designer         SP1
DbContext Template                           VS Gallery VS Gallery VS Gallery VS Gallery
DbContext
                                                NuGet
Code First                                                   NuGet     NuGet      NuGet
Migrations
                                                           ※EF 5 will work with Visual Studio 2010
                                 VSUG DAY 2012 Winter 2012.12.15
まとめ

• 要件に応じた適切な選択肢を選択
 – テクノロジー:EF, ADO.NET DataSet, LINQ to SQL
 – 開発手法:DB First, Model First, Code First


• EF は進化を継続
 – EF1 → EF4 → EF5 … EF6……




                   VSUG DAY 2012 Winter 2012.12.15
Appendix

           VSUG DAY 2012 Winter 2012.12.15
各テクノジーの比較

                 マルチ
          N階層                 異なるプラット                     データモデ        開発生産性
                 DB対応                       チューニング                                  将来性   総じて言えば・・・
          システム                フォーム間連携                     ルの柔軟性        ・保守性


           ○        △            △              ○             △             △       成熟    機能的にも成熟、情報も豊
ADO.NE                                                                                    富。細かいチューニングが
                                            相対的に細部
T                                           まで制御出来る                                       必要な業務アプリなどで有
DataSet                                                                                   効。


           △        ×            △              △             △             △       大きな   基本はEFを使えないか検
LINQ to          SQL Server                                                         進化は   討すべき。マイグレーション
                                              相対的に
SQL                に特化                      パフォーマンス低                                なし    ツールもあり。

           ○        ○            ○              △             ○             ○       進化を   生産性・保守性が高くア
                                                                           相対的に良い
                                                                                    継続    ジャイルな開発現場で有効。
EF                             POCOを採用                     EDMを採用
                                                                            ことが多い         Webなどライトなアプリ開
                                                                                          発に便利。




                                         VSUG DAY 2012 Winter 2012.12.15
Developer ワークフロー
              Designer Centric                             Code Centric




        Model First                             Code First
        •   デザイナによるモデル( .edmx )の作               •   コードでモデルを定義
            成                                   •   ランタイムに DB を自動生成
        •   モデルからクラスの自動生成
        •   モデルから DB の作成

        Database First                          Code First
        •   DB からモデルを自動生成                       •   コードでモデルを定義
        •   DB からクラスを自動生成                           (Reverse engineer tools available)




                  VSUG DAY 2012 Winter 2012.12.15

More Related Content

Viewers also liked

Writing for a Web 2.0 World
Writing for a Web 2.0 WorldWriting for a Web 2.0 World
Writing for a Web 2.0 World
Sallie Goetsch
 
Easy Virtue: a Reconstruction of Plautus' Cistellaria
Easy Virtue: a Reconstruction of Plautus' CistellariaEasy Virtue: a Reconstruction of Plautus' Cistellaria
Easy Virtue: a Reconstruction of Plautus' Cistellaria
Sallie Goetsch
 
初めての Windows ストア アプリ開発for vsug summer2013_up
初めての Windows ストア アプリ開発for vsug summer2013_up初めての Windows ストア アプリ開発for vsug summer2013_up
初めての Windows ストア アプリ開発for vsug summer2013_upvsug_jim
 
20121215 ono
20121215 ono20121215 ono
20121215 onovsug_jim
 
Women In Blogging
Women In BloggingWomen In Blogging
Women In Blogging
Sallie Goetsch
 
Metroスタイルアプリに向けたxamlデザイナーの変更点
Metroスタイルアプリに向けたxamlデザイナーの変更点Metroスタイルアプリに向けたxamlデザイナーの変更点
Metroスタイルアプリに向けたxamlデザイナーの変更点vsug_jim
 
Portuguese Dictionary
Portuguese DictionaryPortuguese Dictionary
Portuguese DictionaryDitza Graca
 
「Windows 8 ストア アプリ開発 tips」 vsug day 2012 winter (2012年12月15日)
「Windows 8 ストア アプリ開発 tips」  vsug day 2012 winter (2012年12月15日)「Windows 8 ストア アプリ開発 tips」  vsug day 2012 winter (2012年12月15日)
「Windows 8 ストア アプリ開発 tips」 vsug day 2012 winter (2012年12月15日)vsug_jim
 
La Historia En Cifras
La Historia En CifrasLa Historia En Cifras
La Historia En Cifras
Centro de Padres
 
Web 1
Web 1Web 1
Web 1nduno
 
2008 Vsug Leaders Summit Lightning Talks Kataoka
2008 Vsug Leaders Summit Lightning Talks Kataoka2008 Vsug Leaders Summit Lightning Talks Kataoka
2008 Vsug Leaders Summit Lightning Talks Kataokavsug_jim
 
Vsugday2012 summer tokyo_aoyagi
Vsugday2012 summer tokyo_aoyagiVsugday2012 summer tokyo_aoyagi
Vsugday2012 summer tokyo_aoyagivsug_jim
 
Design in MOSS 2007
Design in MOSS 2007Design in MOSS 2007
Design in MOSS 2007
Marcelo Pimenta (menta90)
 
2008 Vsug Leaders Summit Lightning Talks Numaguchi
2008 Vsug Leaders Summit Lightning Talks Numaguchi2008 Vsug Leaders Summit Lightning Talks Numaguchi
2008 Vsug Leaders Summit Lightning Talks Numaguchivsug_jim
 
O Kit de Sobrevivência para Inovação em Gestão de Conteúdo.
O Kit de Sobrevivência para Inovação em Gestão de Conteúdo.O Kit de Sobrevivência para Inovação em Gestão de Conteúdo.
O Kit de Sobrevivência para Inovação em Gestão de Conteúdo.
Marcelo Pimenta (menta90)
 
ADO.NETとORMとMicro-ORM -dapper dot netを使ってみた
ADO.NETとORMとMicro-ORM -dapper dot netを使ってみたADO.NETとORMとMicro-ORM -dapper dot netを使ってみた
ADO.NETとORMとMicro-ORM -dapper dot netを使ってみた
Narami Kiyokura
 
Startups e empreendedorismo revolucionando o turismo e os negócios
Startups e empreendedorismo revolucionando o turismo e os negóciosStartups e empreendedorismo revolucionando o turismo e os negócios
Startups e empreendedorismo revolucionando o turismo e os negócios
Marcelo Pimenta (menta90)
 

Viewers also liked (19)

Writing for a Web 2.0 World
Writing for a Web 2.0 WorldWriting for a Web 2.0 World
Writing for a Web 2.0 World
 
Easy Virtue: a Reconstruction of Plautus' Cistellaria
Easy Virtue: a Reconstruction of Plautus' CistellariaEasy Virtue: a Reconstruction of Plautus' Cistellaria
Easy Virtue: a Reconstruction of Plautus' Cistellaria
 
初めての Windows ストア アプリ開発for vsug summer2013_up
初めての Windows ストア アプリ開発for vsug summer2013_up初めての Windows ストア アプリ開発for vsug summer2013_up
初めての Windows ストア アプリ開発for vsug summer2013_up
 
20121215 ono
20121215 ono20121215 ono
20121215 ono
 
Women In Blogging
Women In BloggingWomen In Blogging
Women In Blogging
 
Metroスタイルアプリに向けたxamlデザイナーの変更点
Metroスタイルアプリに向けたxamlデザイナーの変更点Metroスタイルアプリに向けたxamlデザイナーの変更点
Metroスタイルアプリに向けたxamlデザイナーの変更点
 
Portuguese Dictionary
Portuguese DictionaryPortuguese Dictionary
Portuguese Dictionary
 
「Windows 8 ストア アプリ開発 tips」 vsug day 2012 winter (2012年12月15日)
「Windows 8 ストア アプリ開発 tips」  vsug day 2012 winter (2012年12月15日)「Windows 8 ストア アプリ開発 tips」  vsug day 2012 winter (2012年12月15日)
「Windows 8 ストア アプリ開発 tips」 vsug day 2012 winter (2012年12月15日)
 
La Historia En Cifras
La Historia En CifrasLa Historia En Cifras
La Historia En Cifras
 
Web 1
Web 1Web 1
Web 1
 
2008 Vsug Leaders Summit Lightning Talks Kataoka
2008 Vsug Leaders Summit Lightning Talks Kataoka2008 Vsug Leaders Summit Lightning Talks Kataoka
2008 Vsug Leaders Summit Lightning Talks Kataoka
 
Ireland
IrelandIreland
Ireland
 
Vsugday2012 summer tokyo_aoyagi
Vsugday2012 summer tokyo_aoyagiVsugday2012 summer tokyo_aoyagi
Vsugday2012 summer tokyo_aoyagi
 
Design in MOSS 2007
Design in MOSS 2007Design in MOSS 2007
Design in MOSS 2007
 
Latvian recipes
Latvian recipesLatvian recipes
Latvian recipes
 
2008 Vsug Leaders Summit Lightning Talks Numaguchi
2008 Vsug Leaders Summit Lightning Talks Numaguchi2008 Vsug Leaders Summit Lightning Talks Numaguchi
2008 Vsug Leaders Summit Lightning Talks Numaguchi
 
O Kit de Sobrevivência para Inovação em Gestão de Conteúdo.
O Kit de Sobrevivência para Inovação em Gestão de Conteúdo.O Kit de Sobrevivência para Inovação em Gestão de Conteúdo.
O Kit de Sobrevivência para Inovação em Gestão de Conteúdo.
 
ADO.NETとORMとMicro-ORM -dapper dot netを使ってみた
ADO.NETとORMとMicro-ORM -dapper dot netを使ってみたADO.NETとORMとMicro-ORM -dapper dot netを使ってみた
ADO.NETとORMとMicro-ORM -dapper dot netを使ってみた
 
Startups e empreendedorismo revolucionando o turismo e os negócios
Startups e empreendedorismo revolucionando o turismo e os negóciosStartups e empreendedorismo revolucionando o turismo e os negócios
Startups e empreendedorismo revolucionando o turismo e os negócios
 

Similar to Daisukei vsug ef

Cloud から IoT まで、なんでもおまかせ ~ .NET 5 正式リリース!
Cloud から IoT まで、なんでもおまかせ ~ .NET 5 正式リリース!Cloud から IoT まで、なんでもおまかせ ~ .NET 5 正式リリース!
Cloud から IoT まで、なんでもおまかせ ~ .NET 5 正式リリース!
Akira Inoue
 
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
NTT DATA Technology & Innovation
 
The Twelve-Factor (A|M)pp with C#
The Twelve-Factor (A|M)pp with C#The Twelve-Factor (A|M)pp with C#
The Twelve-Factor (A|M)pp with C#
Yuta Matsumura
 
『どうする?どうやる? データセンター間ネット ワーク』 - 802.1aq(SPB)/TRILL@JANOG29
『どうする?どうやる?  データセンター間ネット ワーク』 - 802.1aq(SPB)/TRILL@JANOG29『どうする?どうやる?  データセンター間ネット ワーク』 - 802.1aq(SPB)/TRILL@JANOG29
『どうする?どうやる? データセンター間ネット ワーク』 - 802.1aq(SPB)/TRILL@JANOG29
Yukihiro Kikuchi
 
ADO.NET Entity Framework
ADO.NET Entity Framework ADO.NET Entity Framework
ADO.NET Entity Framework
Microsoft
 
【16-D-4】3分ではじめるスマホアプリのビジュアル開発
【16-D-4】3分ではじめるスマホアプリのビジュアル開発【16-D-4】3分ではじめるスマホアプリのビジュアル開発
【16-D-4】3分ではじめるスマホアプリのビジュアル開発
hmimura_embarcadero
 
18-D-1 .Net Framework 4 概要
18-D-1 .Net Framework 4 概要18-D-1 .Net Framework 4 概要
18-D-1 .Net Framework 4 概要Developers Summit
 
The seminar of asp.net at 201908 sakurug
The seminar of asp.net at 201908 sakurugThe seminar of asp.net at 201908 sakurug
The seminar of asp.net at 201908 sakurug
SAKURUG co.
 
DeNA内製ゲームエンジンの現状と目指す未来 #denatechcon
DeNA内製ゲームエンジンの現状と目指す未来 #denatechconDeNA内製ゲームエンジンの現状と目指す未来 #denatechcon
DeNA内製ゲームエンジンの現状と目指す未来 #denatechcon
DeNA
 
OSSを活用したIaCの実現
OSSを活用したIaCの実現OSSを活用したIaCの実現
OSSを活用したIaCの実現
Trainocate Japan, Ltd.
 
.NET Core と Container, そして Azure Web Apps on Linux による Web アプリ開発最前線
.NET Core と Container, そして Azure Web Apps on Linux による Web アプリ開発最前線.NET Core と Container, そして Azure Web Apps on Linux による Web アプリ開発最前線
.NET Core と Container, そして Azure Web Apps on Linux による Web アプリ開発最前線
Akira Inoue
 
デモで楽しむ Visual Studio 2022 & .NET 6 最新アップデート
デモで楽しむ Visual Studio 2022 & .NET 6 最新アップデートデモで楽しむ Visual Studio 2022 & .NET 6 最新アップデート
デモで楽しむ Visual Studio 2022 & .NET 6 最新アップデート
Akira Inoue
 
.NET Conf 2017 Japan Keynote ".NET Everywhere!"
.NET Conf 2017 Japan Keynote ".NET Everywhere!".NET Conf 2017 Japan Keynote ".NET Everywhere!"
.NET Conf 2017 Japan Keynote ".NET Everywhere!"
Akira Inoue
 
Voicepic@FacebookNight
Voicepic@FacebookNightVoicepic@FacebookNight
Voicepic@FacebookNight
Manabu Shimobe
 
Dev campjpn day2session3
Dev campjpn day2session3Dev campjpn day2session3
Dev campjpn day2session3
Developer Camp 2012 Japan Fall
 
LightSwitch ~結局何ができるの~ rev 2
LightSwitch ~結局何ができるの~ rev 2LightSwitch ~結局何ができるの~ rev 2
LightSwitch ~結局何ができるの~ rev 2
Yoshitaka Seo
 
IoT時代を迎えて、あなたのシステムは今までのDBで充分ですか?~ GridDBとその適用事例紹介 ~
IoT時代を迎えて、あなたのシステムは今までのDBで充分ですか?~ GridDBとその適用事例紹介 ~ IoT時代を迎えて、あなたのシステムは今までのDBで充分ですか?~ GridDBとその適用事例紹介 ~
IoT時代を迎えて、あなたのシステムは今までのDBで充分ですか?~ GridDBとその適用事例紹介 ~
griddb
 

Similar to Daisukei vsug ef (20)

Vsug ef
Vsug efVsug ef
Vsug ef
 
Cloud から IoT まで、なんでもおまかせ ~ .NET 5 正式リリース!
Cloud から IoT まで、なんでもおまかせ ~ .NET 5 正式リリース!Cloud から IoT まで、なんでもおまかせ ~ .NET 5 正式リリース!
Cloud から IoT まで、なんでもおまかせ ~ .NET 5 正式リリース!
 
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
 
The Twelve-Factor (A|M)pp with C#
The Twelve-Factor (A|M)pp with C#The Twelve-Factor (A|M)pp with C#
The Twelve-Factor (A|M)pp with C#
 
『どうする?どうやる? データセンター間ネット ワーク』 - 802.1aq(SPB)/TRILL@JANOG29
『どうする?どうやる?  データセンター間ネット ワーク』 - 802.1aq(SPB)/TRILL@JANOG29『どうする?どうやる?  データセンター間ネット ワーク』 - 802.1aq(SPB)/TRILL@JANOG29
『どうする?どうやる? データセンター間ネット ワーク』 - 802.1aq(SPB)/TRILL@JANOG29
 
ADO.NET Entity Framework
ADO.NET Entity Framework ADO.NET Entity Framework
ADO.NET Entity Framework
 
【16-D-4】3分ではじめるスマホアプリのビジュアル開発
【16-D-4】3分ではじめるスマホアプリのビジュアル開発【16-D-4】3分ではじめるスマホアプリのビジュアル開発
【16-D-4】3分ではじめるスマホアプリのビジュアル開発
 
18-D-1 .Net Framework 4 概要
18-D-1 .Net Framework 4 概要18-D-1 .Net Framework 4 概要
18-D-1 .Net Framework 4 概要
 
The seminar of asp.net at 201908 sakurug
The seminar of asp.net at 201908 sakurugThe seminar of asp.net at 201908 sakurug
The seminar of asp.net at 201908 sakurug
 
20021007
2002100720021007
20021007
 
DeNA内製ゲームエンジンの現状と目指す未来 #denatechcon
DeNA内製ゲームエンジンの現状と目指す未来 #denatechconDeNA内製ゲームエンジンの現状と目指す未来 #denatechcon
DeNA内製ゲームエンジンの現状と目指す未来 #denatechcon
 
OSSを活用したIaCの実現
OSSを活用したIaCの実現OSSを活用したIaCの実現
OSSを活用したIaCの実現
 
ZendStudioのご紹介
ZendStudioのご紹介ZendStudioのご紹介
ZendStudioのご紹介
 
.NET Core と Container, そして Azure Web Apps on Linux による Web アプリ開発最前線
.NET Core と Container, そして Azure Web Apps on Linux による Web アプリ開発最前線.NET Core と Container, そして Azure Web Apps on Linux による Web アプリ開発最前線
.NET Core と Container, そして Azure Web Apps on Linux による Web アプリ開発最前線
 
デモで楽しむ Visual Studio 2022 & .NET 6 最新アップデート
デモで楽しむ Visual Studio 2022 & .NET 6 最新アップデートデモで楽しむ Visual Studio 2022 & .NET 6 最新アップデート
デモで楽しむ Visual Studio 2022 & .NET 6 最新アップデート
 
.NET Conf 2017 Japan Keynote ".NET Everywhere!"
.NET Conf 2017 Japan Keynote ".NET Everywhere!".NET Conf 2017 Japan Keynote ".NET Everywhere!"
.NET Conf 2017 Japan Keynote ".NET Everywhere!"
 
Voicepic@FacebookNight
Voicepic@FacebookNightVoicepic@FacebookNight
Voicepic@FacebookNight
 
Dev campjpn day2session3
Dev campjpn day2session3Dev campjpn day2session3
Dev campjpn day2session3
 
LightSwitch ~結局何ができるの~ rev 2
LightSwitch ~結局何ができるの~ rev 2LightSwitch ~結局何ができるの~ rev 2
LightSwitch ~結局何ができるの~ rev 2
 
IoT時代を迎えて、あなたのシステムは今までのDBで充分ですか?~ GridDBとその適用事例紹介 ~
IoT時代を迎えて、あなたのシステムは今までのDBで充分ですか?~ GridDBとその適用事例紹介 ~ IoT時代を迎えて、あなたのシステムは今までのDBで充分ですか?~ GridDBとその適用事例紹介 ~
IoT時代を迎えて、あなたのシステムは今までのDBで充分ですか?~ GridDBとその適用事例紹介 ~
 

Daisukei vsug ef

  • 1. VSUG DAY 2012 Winter (2012.12.15) ADO.NET Entity Framework 歴史と最新情報 井上大輔 日本マイクロソフト株式会社
  • 2. はじめに • ゴール  ADO.NET Entity Framework を使う上でのポイントを理解してください • Level 300 くらい  初心者向けではありません • デモはコンソールアプリばかりです  見た目にこだわりません VSUG DAY 2012 Winter 2012.12.15
  • 3. Agenda VSUG DAY 2012 Winter 2012.12.15
  • 4. ADO.NET Entity Framework の今 VSUG DAY 2012 Winter 2012.12.15
  • 5. 現在、主要なデータアクセステクノロジーの選択肢 .NET Framework  ADO.NET DataSet  LINQ to SQL  ADO.NET Entity Framework(EF) VSUG DAY 2012 Winter 2012.12.15
  • 6. 各テクノジーの比較(ザックリと・・・) N 階層 マルチ チュー データモデ 開発生産性 将来性 総じて言えば・・・ システム DB 対応 ニング ルの柔軟性 ・保守性 成熟 機能的にも成熟、情報も豊富。細 ADO.NE ○ △ ○ △ △ かいチューニングが必要な業務 相対的に細 T 部まで制御 アプリなどで有効。 DataSet 出来る 大きな進 基本はEFを使えないか検討すべ △ × △ △ △ 化はなし き。マイグレーションツールもあり。 LINQ to SQL Server 相対的に SQL に特化 速度は低 ○ ○ △ ○ ○ 進化を継 生産性・保守性が高く、アジャイ EF 概念モデル 相対的に良い 続 ルな開発現場で有効。Webなど を定義 ことが多い ライトなアプリ開発に便利。 VSUG DAY 2012 Winter 2012.12.15
  • 7. ご参考 EF Supports Multiple Databases - www.tinyurl.com/efproviders Oracle Data MySQL Progress Provider for Devart Connector/NET DataDirect .NET Connect VistaDB OpenLink IBM (DB2, Sybase SQL Software Informix, U2) Anywhere Sybase Phoenix Adaptive Software SQL Compact Synergex Server Solutions Enterprise VSUG DAY 2012 Winter 2012.12.15
  • 8. EF の進化 EF 1 EF 4 EF 4.1, 4.2 EF 4.3 EF 5 •Included in.NET 3.5/VS •Included in .NET 4/VS 2010 •Out of band release •Out of band release ・Out of band release 2008 SP1 •POCO •Available on NuGet •Available on NuGet •Database First ・Available on NuGet •Lazy Loading •Builds on .NET 4 •Builds on .NET 4 •Basic O/RM support •FKs •Code First •Code First Migrations ・Builds on .NET 4 •Testability •Simplified DbContext API •Improved Database ・Code First Migrations •Model First •Semantic Versioning Generation •Code First & DbContext bug ・Improved Database •Customizable T4 Code-Gen fixes Generation •N-Tier ・Code First & DbContext bug fixes 2008/08 2012/08 VSUG DAY 2012 Winter 2012.12.15
  • 9. EF 1 インピーダンス ミスマッチ問題の解決 プレゼンテーション層  Database First EF  基本的な O/R マッパー ドメイン層 データ層 RDB VSUG DAY 2012 Winter 2012.12.15
  • 10. EF 4 ドメイン駆動、N 階層システムの開発を プレゼンテーション層 意識した機能強化  Model First  EDM から DB オブジェクトを生成 EF  【概念モデル】-> 【論理モデル】の流れで開発が出来る ドメイン層  Persistence Ignorance(PI)  POCO(Plain-Old CLR Object)  永続化技術(EFなど)に依存しない実装が可能  他の技術への変更が容易になった データ層  Change Tracking  自己追跡エンティティ(DataSet の DiffGram に相当)  変更(CUD)履歴をエンティティが管理 RDB  階層を跨ったエンティティの CRUD が容易になった VSUG DAY 2012 Winter 2012.12.15
  • 11. DEMO VSUG DAY 2012 Winter 2012.12.15
  • 12. EF 4.1, 4.2 より迅速な開発を意識した機能強化 プレゼンテーション層  Code First  コードから DB や DB オブジェクトを生成 EF  テスト駆動開発やアジャイルな開発、 public partial class Entry { ドメイン層 public virtual int ID { get; プロトタイプの開発に有効 } set;  特に MVC などライトな Web アプリ開発に有効  特徴 • POCO ベースのエンティティ データ層 • CoC(Convention over Configuration) 「規約は設定に勝る」がベースの開発 RDB VSUG DAY 2012 Winter 2012.12.15
  • 13. DEMO VSUG DAY 2012 Winter 2012.12.15
  • 14. CoC(Convention over Configuration)  「規約は設定に勝る」をベースにした実装  クラス(単数形)は、同名のテーブル(複数形)にマッピングされる。  プロパティは、同名のテーブル列にマッピングされる 。  主キーは、Id、または<クラス名>Idという名前がデフォルトになる。  など  規約から逸脱する部分  Annotation (System.ComponentModel.DataAnnotations) • エンティティのプロパティに属性を指定 • Key、StringLength、ConcurrencyCheck、Required、Timestamp、DataMember、RelatedTo、MaxLength、 StoreGenerated など多数  Fluent API (System.Data.Entity.DbModelBuilder) • エンティティ外部から指定(つまりエンティティ自体は POCO で実装可能) VSUG DAY 2012 Winter 2012.12.15
  • 15. DEMO VSUG DAY 2012 Winter 2012.12.15
  • 16. Entity Framework 4.3 機能強化とバグフィックス  Code First Migration  スキーマを更新した時のデータ移行に対応  bug fixes  GetDatabaseValues のバグ修正  DbSet の名前に Unicode が使えなかったバグ修正 VSUG DAY 2012 Winter 2012.12.15
  • 17. Code First Migration  Automatic Migration  自動マイグレーション  自動化の対象 • プロパティやクラスの追加 • プロパティやクラス名称の変更 • プロパティやクラスの名称変更をせずに、カラムやテーブル名称の変更 • プロパティの削除  Code-Based Migration  任意のタイミングでマイグレーション  データの投入、インデックス、ユニーク、デフォルト値の指定など細かい制御が 可能 VSUG DAY 2012 Winter 2012.12.15
  • 18. Code First Migration  初期化(IDatabaseInitializer)の実装クラスの追加  CreateDatabaseIfNotExists(Of TContext)  DropCreateDatabaseAlways(Of TContext)  DropCreateDatabaseIfModelChanges(Of TContext)  コマンド  Enable-Migrations / Add-Migration(Code-Base migration) / Update-Database VSUG DAY 2012 Winter 2012.12.15
  • 19. DEMO VSUG DAY 2012 Winter 2012.12.15
  • 20. EF 5 追加機能 マルチダイアグラム  Enum  Spatial types (Geography / Geometry)  デザイナの改善 enum  Table-Valued Functions パフォーマンスの向上  Automatic query caching for LINQ  LINQ parameter evaluation optimization ストアドプロシージャと ハイライトとカラーリング 関数のバッチインポート  Table-Per-Type query optimization  Large model improvements VSUG DAY 2012 Winter 2012.12.15
  • 21. EF 4.0 と比べ 600% 近く性能が向上 Performance in warm execution of query based on key 2500% 2000% 1500% Time spent 1000% 500% 0% Handcoded EF Raw SQL EF Compiled Query Entity SQL LINQ to Entities LINQ to SQL ADO.NET .NET 4.0 100% 199% 262% 1518% 2314% 1650% .NET 4.5 100% 211% 269% 406% 412% 1350% VSUG DAY 2012 Winter 2012.12.15
  • 22. DEMO VSUG DAY 2012 Winter 2012.12.15
  • 23. 各開発手法の比較(ザックリと・・・) DB 機能(SP、ビュー、 チューニング 開発、修正の 総じて言えば・・・ アプローチ など)のフル活用 容易性 ○ ○ △ リレーショナルモデルがある リレーショナ Database 程度決まっていれば DB 機 ルモデルを先 相対的にDBの機能を 相対的に First 多く使える 1番面倒 能がフルに活用できるので に開発 便利 △ △ 概念モデルがある程度決 △ まっていれば DB を意識しな Model 概念モデルを い開発ができるので便利。 First 先に開発 学術的には正しいが現場で 使えるかは検証が必要。 △ ○ モデルが固まってない段階 △ から俊敏に開発していく際に Code コードから先 便利 First に開発 - テストファースト - アジャイルな開発 - プロトタイプの開発 VSUG DAY 2012 Winter 2012.12.15 ※ 結構、好みが大きいかも・・
  • 24. ADO.NET Entity Framework の未来 VSUG DAY 2012 Winter 2012.12.15
  • 25. EF6 alpha 2  Apache 2.0 License  Code first custom conventions  非同期処理 • SaveChangesAsync(), ExecuteSqlCommandAsync(), FindAsync(), SingleAsync(), ToListAsync()  Code First の ストアドプロシージャ対応(未)  Connection Resiliency (Retry) (未)  など多数の機能追加を予定 VSUG DAY 2012 Winter 2012.12.15
  • 26. DEMO VSUG DAY 2012 Winter 2012.12.15
  • 27. 要求、キュー、スレッド Web サーバー (IIS) 要求 (Request) スレッド (Thread) 処理中 … キュー (Queue) 処理中 … 処理中 … スレッド プール  キュー (Queue) に入った要求 (Request) は、ユーザー (クライアント) からは 、処理中の要求(Request) と同じように見えます  要求とスレッドは、1 対 1 の関係ではありません。1 つのスレッドが、複数の 要求を同時に処理することもあります VSUG DAY 2012 Winter 2012.12.15
  • 28. 同期処理 スレッドが空くのを待機 . . . I/O 処理を待機 (ネットワーク接続, ファイル接続, など) 要求 スレッド スレッド プール VSUG DAY 2012 Winter 2012.12.15
  • 29. 非同期処理 スレッドの有効活用による、 高スループット、高スケーラブルな処理の実現 要求 スレッド プール VSUG DAY 2012 Winter 2012.12.15
  • 30. EF Power Tools Beta 2  既存 DB スキーマから Code First のクラスを自動生成  Visual Studio の拡張機能として提供 VSUG DAY 2012 Winter 2012.12.15
  • 31. DEMO VSUG DAY 2012 Winter 2012.12.15
  • 32. Entity Framework のバージョンと機能 .NET/VS releases OOB releases EF 6.0 EF 1.0 EF 4.0 EF 4.1, 4.2 EF 4.3 EF 5.0 Alpah Provider Model EntityClient MetadataWorkspace .NET 3.5 SP1 .NET 4.0 .NET 4.0 .NET 4.0 .NET 4.5 .NET 4.5 ObjectContext EntityDataSource VS 2008 VS 2010 VS 2010 VS 2010 VS2012 VS 2012 Entity Designer SP1 DbContext Template VS Gallery VS Gallery VS Gallery VS Gallery DbContext NuGet Code First NuGet NuGet NuGet Migrations ※EF 5 will work with Visual Studio 2010 VSUG DAY 2012 Winter 2012.12.15
  • 33. まとめ • 要件に応じた適切な選択肢を選択 – テクノロジー:EF, ADO.NET DataSet, LINQ to SQL – 開発手法:DB First, Model First, Code First • EF は進化を継続 – EF1 → EF4 → EF5 … EF6…… VSUG DAY 2012 Winter 2012.12.15
  • 34. Appendix VSUG DAY 2012 Winter 2012.12.15
  • 35. 各テクノジーの比較 マルチ N階層 異なるプラット データモデ 開発生産性 DB対応 チューニング 将来性 総じて言えば・・・ システム フォーム間連携 ルの柔軟性 ・保守性 ○ △ △ ○ △ △ 成熟 機能的にも成熟、情報も豊 ADO.NE 富。細かいチューニングが 相対的に細部 T まで制御出来る 必要な業務アプリなどで有 DataSet 効。 △ × △ △ △ △ 大きな 基本はEFを使えないか検 LINQ to SQL Server 進化は 討すべき。マイグレーション 相対的に SQL に特化 パフォーマンス低 なし ツールもあり。 ○ ○ ○ △ ○ ○ 進化を 生産性・保守性が高くア 相対的に良い 継続 ジャイルな開発現場で有効。 EF POCOを採用 EDMを採用 ことが多い Webなどライトなアプリ開 発に便利。 VSUG DAY 2012 Winter 2012.12.15
  • 36. Developer ワークフロー Designer Centric Code Centric Model First Code First • デザイナによるモデル( .edmx )の作 • コードでモデルを定義 成 • ランタイムに DB を自動生成 • モデルからクラスの自動生成 • モデルから DB の作成 Database First Code First • DB からモデルを自動生成 • コードでモデルを定義 • DB からクラスを自動生成 (Reverse engineer tools available) VSUG DAY 2012 Winter 2012.12.15