次の方法で共有


エンティティ フレームワーク アプリケーションの作成 (SQL Server Compact)

ここでは、SQL Server Compact データベースをデータ ソースとして使用するエンティティ フレームワーク アプリケーションの作成手順について説明します。

新しいエンティティ フレームワーク アプリケーションを作成するには

  1. Visual Studio の [ファイル] メニューで、[新規作成] をポイントし、[プロジェクト] をクリックします。

  2. [新しいプロジェクト] ダイアログ ボックスの [プロジェクトの種類] の一覧から、使用するプログラミング言語を展開し、[Visual C#] または [Visual Basic] を選択します。

  3. [テンプレート] の一覧で、[コンソール アプリケーション] をクリックします。

  4. プロジェクトの名前 (SQLCompactEDMProject など) と場所を指定し、[OK] をクリックします。

  5. Northwind.sdf のエンティティ データ モデルを生成するには、%ProgramFiles%\Microsoft SQL Server Compact Edition\v3.5\Samples フォルダからプロジェクトがあるフォルダに Northwind.sdf をコピーします。

  6. [プロジェクト] メニューの [新しい項目の追加] をクリックします。

  7. [テンプレート] ペインで、[ADO.NET エンティティ データ モデル] を選択します。

  8. モデル名として「Northwind.edmx」と入力し、[追加] をクリックします。

  9. Entity Data Model ウィザードの最初のページが表示されます。

  10. [モデルのコンテンツの選択] ダイアログ ボックスで、[データベースから生成] をクリックします。その後、[次へ] をクリックします。

  11. [新しい接続] をクリックします。

  12. [接続プロパティ] ダイアログ ボックスで、[データ ソース][変更] をクリックします。Microsoft SQL Server Compact 3.5 を選択して、Northwind.sdf を参照し、[OK] をクリックします。

    [データ接続の選択] ダイアログ ボックスが、指定したデータベース接続設定を使用して更新されます。

  13. [エンティティ接続設定に名前を付けて App.Config に保存] チェック ボックスがオンになっており、値が NorthwindEntities に設定されていることを確認します。その後、[次へ] をクリックします。

  14. [データベース オブジェクトの選択] ダイアログ ボックスですべてのオブジェクトを消去した後、[テーブル] を展開し、テーブル オブジェクトとして Customers を選択します。

  15. [モデル名前空間] に「NorthwindModel」と入力します。

  16. [完了] をクリックしてウィザードを終了します。

  17. ウィザードによって次の処理が行われます。

    1. System.Data.Entity.dll、System.Runtime.Serialization.dll、System.Security.dll の各アセンブリに参照を追加します。

    2. EDM を定義する Northwind.edmx ファイルを生成します。

    3. EDM に基づいて生成されたクラスを含むソース コード ファイルを作成します。ソース コード ファイルを表示するには、ソリューション エクスプローラで .edmx ファイルを展開します。

    4. App.Config ファイルを作成します。

  18. プロジェクトのアプリケーション構成ファイル (app.config) をダブルクリックし、接続文字列に "provider=System.Data.SqlServerCe.3.5" とあることを確認します。

  19. アプリケーションのコード ページに、以下の using ステートメントを追加します。

    C#:

    using NorthwindModel;
    

    Visual Basic:

    Imports SQLCompactEDM.NorthwindModel
    

    モデルの名前は、Northwind.edmx ファイルに指定された名前空間の値に対応します。

  20. 次のコード例をコード ファイルにコピーします。その後、コンパイルして実行します。

重要

System.Data.Entity.dll アセンブリは、.NET Framework Version 3.5 の SP1 リリースの一部です。System.Data.Entity アセンブリのマネージ リファレンス トピックは、エンティティ フレームワーク ドキュメントにあります。

以下のコード例では、SQL Server Compact Northwind.sdf データベースに対する単純なエンティティ フレームワーク クエリを 3 つ紹介します。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.EntityClient;
using System.Data;
using NorthwindModel;

namespace SQLCompactEDMProject
{
  class SSC_EntityFrameworkExample
  {
    static void Main(string[] args)
    {
      Console.WriteLine(
        "SQL Server Compact and Northwind Entity Framework Sample:");
      try
      {
        // Establish a connection to the underlying data provider by 
        // using the connection string specified in the config file.
        using (EntityConnection connection = 
             new EntityConnection("Name = NorthwindEntities"))
        {
          // Open the connection.
          connection.Open();

          // A simple query that demonstrates 
          // how to use Entity SQL for entities.
          Console.WriteLine("\nEntity SQL Query:");
          ESQL_Query(connection);

          // A simple query that demonstrates 
          // how to use LINQ to Entities.
          // A new connection is established by using the connection 
          // string in the App.Config file.
          Console.WriteLine("\nLINQ To Entity Query:");
          LINQ_To_Entity_Query();

          // A simple query that demonstrates how to use ObjectContext
          // on data objects with an existing connection.
          Console.WriteLine("\nObject Query:");
          ObjectQuery(connection);

          // Close the connection.
          connection.Close();
       }
     }
     catch (Exception ex)
     {
       Console.WriteLine(ex.Message);
     }
   }

  // A simple query that demonstrates how to use 
  // Entity SQL query for entities.
  private static void ESQL_Query(EntityConnection entityConnection)
  {
    EntityCommand entityCommand = entityConnection.CreateCommand();
    entityCommand.CommandText =
      @"Select Cust.Customer_Id as Id from NorthwindEntities.Customers as Cust order by Cust.Customer_Id";

     EntityDataReader entityDataReader =
     entityCommand.ExecuteReader(CommandBehavior.SequentialAccess);

     while (entityDataReader.Read())
     {
       for (int i = 0; i < entityDataReader.FieldCount; i++)
         Console.Write(entityDataReader[i].ToString() + "\t");
       Console.WriteLine();
     }
  }

  // A simple LINQ query on the Customers entity set in the Northwind 
  // Context.
  // The code example creates a new Northwind Context based on the 
  // settings provided in the App.Config File.
  private static void LINQ_To_Entity_Query()
  {
    using (NorthwindEntities nwEntities = new NorthwindEntities())
    {
      IQueryable<string> customers =
         from c in nwEntities.Customers select c.Company_Name;

      foreach (String c in customers)
      {
        Console.WriteLine(c);
      }
   }
  }

  // The ObjectContext provides access to the collections of data used 
  // by applications. 
  // The following code shows how to open a connection to the 
  // ObjectContext named NorthwindEntities. 
  // With the application configuration file in scope the connection 
  // can be opened with one line of code: 
  // NorthwindEntities nwEntities = new NorthwindEntities(entityConnection).
  private static void ObjectQuery(EntityConnection entityConnection)
  {
     using (NorthwindEntities nwEntities = new 
                  NorthwindEntities(entityConnection))
     {
        foreach (Customers c in nwEntities.Customers)
        {
          Console.WriteLine(c.Company_Name);
        }
      }
  }
  }
}
Imports System.Data.EntityClient
Imports SQLCompactEDM.NorthwindModel

Module Module1
    Sub Main()
        Console.WriteLine("SQL Server Compact and Northwind Entity Framework Sample:")
        Try
            Using connection As EntityConnection = _
                New EntityConnection("Name = NorthwindEntities")
                ' Open the connection.
                connection.Open()

                ' A simple query that demonstrates how to use ESQL for entities.
                Console.WriteLine(vbNewLine & "ESQL Query:")
                ESQL_Query(connection)

                ' A simple query that demonstrates how to use LINQ to Entities.
                ' A new connection is established by using the
                ' connection string in the App.Config file.
                Console.WriteLine(vbNewLine & "LINQ To Entity Query:")
                LINQ_To_Entity_Query()

                ' A simple query that demonstrates how to use ObjectContext
                ' on data objects with an existing connection.
                Console.WriteLine(vbNewLine & "Object Query:")
                ObjectQuery(connection)

                ' Close the connection.
                connection.Close()
            End Using
        Catch ex As Exception
            Console.WriteLine(ex.Message)
        End Try
    End Sub

    ' A simple query that demonstrates how to use ESQL for entities.
    Private Sub ESQL_Query(ByVal entityConnection As EntityConnection)
        Dim entityCommand As EntityCommand = entityConnection.CreateCommand
        entityCommand.CommandText = _
            "Select Cust.Customer_Id as Id from NorthwindEntities.Customers as Cust order by Cust.Customer_Id"

        Dim entityDataReader As EntityDataReader = _
            entityCommand.ExecuteReader(CommandBehavior.SequentialAccess)

        Do While entityDataReader.Read
            Dim i As Integer
            For i = 0 To entityDataReader.FieldCount - 1
                Console.Write((entityDataReader.Item(i).ToString & vbTab))
            Next i
            Console.WriteLine()
        Loop
    End Sub

    ' A simple LINQ query on the Customers entity set in the Northwind Context.
    ' The code example creates a new Northwind Context based on the 
    ' settings provided in the App.Config File.
    Private Sub LINQ_To_Entity_Query()
        Using nwEntities As NorthwindEntities = New NorthwindEntities
            Dim customers = From c In nwEntities.Customers Select c.Company_Name

            For Each c In customers
                Console.WriteLine(c)
            Next
        End Using
    End Sub

    ' The ObjectContext provides access to the collections of data used by applications. 
    ' The following code shows how to open a connection to the ObjectContext named NorthwindEntities. 
    ' With the application configuration file in scope the connection can be opened with one line of code: 
    ' NorthwindEntities nwEntities = new NorthwindEntities(entityConnection).
    Private Sub ObjectQuery(ByVal entityConnection As EntityConnection)
        Using nwEntities As NorthwindEntities = New NorthwindEntities(entityConnection)
            Dim c As Customers
            For Each c In nwEntities.Customers
                Console.WriteLine(c.Company_Name)
            Next
        End Using
    End Sub
End Module

関連項目

その他の技術情報

Entity Framework (SQL Server Compact)