方法: クラス ライブラリで定義されたモデルを使用する (Entity Data Model ツール)

このトピックでは、Visual Studio 2008 クラス ライブラリ プロジェクトで定義された概念モデルを使用する方法について説明します。

このトピックの最初の手順では、クラス ライブラリで定義された概念モデルを ASP.NET Web サイト プロジェクト以外のプロジェクトから使用する方法について説明します。 2 番目の手順では、クラス ライブラリで定義された概念モデルを ASP.NET Web サイト プロジェクトから使用する方法について説明します。

クラス ライブラリで定義されたモデルを ASP.NET Web サイト プロジェクト以外のプロジェクトから使用するには

  1. Visual Studio で、Visual C# または Visual Basic クラス ライブラリ プロジェクトを作成します。

    Visual Studio でのプロジェクトの作成については、「方法: ソリューションおよびプロジェクトを作成する」を参照してください。

  2. 概念モデルをクラス ライブラリ プロジェクトに追加します。

    新しい概念モデルを作成してプロジェクトに追加する方法については、「方法: 新しい .edmx ファイルを作成する (Entity Data Model ツール)」を参照してください。 既存の概念モデルをプロジェクトに追加する方法については、「方法: 既存の .edmx ファイルを追加する (Entity Data Model ツール)」を参照してください。

  3. ASP.NET Web サイト プロジェクトではない新しいプロジェクトを既存のソリューションに追加します。

    プロジェクトを既存のソリューションに追加する方法については、「方法: 複数のプロジェクトから成るソリューションを作成する」を参照してください。

  4. 新しく追加したプロジェクト (クラス ライブラリ プロジェクトではない) を右クリックして [参照の追加] をクリックします。

    [参照の追加] ダイアログ ボックスが表示されます。

  5. [参照の追加] ダイアログ ボックスの [プロジェクト] タブをクリックし、クラス ライブラリ プロジェクトを選択します。 [OK] をクリックします。

  6. もう一度、新しく追加したプロジェクト (クラス ライブラリ プロジェクトではない) を右クリックして [参照の追加] をクリックします。

  7. [追加の参照] ダイアログ ボックスの [.NET] タブをクリックし、[System.Data.Entity] を選択します。 [OK] をクリックします。

  8. クラス ライブラリ プロジェクトの App.Config ファイルを開きます。

  9. App.Config ファイルの接続文字列のセクションを選択して右クリックし、[コピー] をクリックします。 たとえば、次のようなコードをコピーします。

    <add name="SchoolEntities" 
               connectionString="metadata=res://*/School.csdl|
                                          res://*/School.ssdl|
                                          res://*/School.msl;
                                 provider=System.Data.SqlClient;
                                 provider connection string=&quot;
                                 Data Source=(local);
                                 Initial Catalog=School;
                                 Integrated Security=True;
                                 MultipleActiveResultSets=True&quot;" 
               providerName="System.Data.EntityClient" />
    
  10. 新しく作成したプロジェクトの App.Config ファイルを開き、コピーした接続文字列情報を <connectionStrings> ノードに貼り付けます。

    Cc716677.note(ja-jp,VS.100).gif注 :
    プロジェクトに App.Config ファイルがない場合は、ソリューション エクスプローラーでプロジェクトを右クリックし、[追加] をポイントして [新しい項目] をクリックすることによって追加できます。表示されたダイアログ ボックスから [アプリケーション構成ファイル] を選択し、[OK] をクリックします。

これで、クラス ライブラリ プロジェクトで定義されている概念モデルを使用するコードを、新しく追加したプロジェクトで記述できるようになります。

Cc716677.note(ja-jp,VS.100).gif注 :
ソリューションをビルドする前に、新しく追加したプロジェクトをスタートアップ プロジェクトとして設定する必要が生じる場合があります。その場合は、ソリューション エクスプローラーでプロジェクトを右クリックし、[スタートアップ プロジェクトに設定] をクリックします。

クラス ライブラリで定義されたモデルを ASP.NET Web サイト プロジェクトから使用するには

  1. Visual Studio で、Visual C# または Visual Basic クラス ライブラリ プロジェクトを作成します。

    Visual Studio でのプロジェクトの作成については、「方法: ソリューションおよびプロジェクトを作成する」を参照してください。

  2. 概念モデルをクラス ライブラリ プロジェクトに追加します。

    新しい概念モデルを作成してプロジェクトに追加する方法については、「方法: 新しい .edmx ファイルを作成する (Entity Data Model ツール)」を参照してください。 既存の概念モデルをプロジェクトに追加する方法については、「方法: 既存の .edmx ファイルを追加する (Entity Data Model ツール)」を参照してください。

  3. ASP.NET Web サイト プロジェクトを既存のソリューションに追加します。

    プロジェクトを既存のソリューションに追加する方法については、「方法: 複数のプロジェクトから成るソリューションを作成する」を参照してください。

  4. ASP.NET Web サイト プロジェクトを右クリックして [参照の追加] をクリックします。

    [参照の追加] ダイアログ ボックスが表示されます。

  5. [追加の参照] ダイアログ ボックスの [.NET] タブをクリックし、[System.Data.Entity] を選択します。 [OK] をクリックします。

  6. 次に、ASP.NET Web サイト プロジェクトからクラス ライブラリ プロジェクトを参照します。 これを実行するには、次の 2 つの方法があります。

    1. ソリューション エクスプローラーで、ASP.NET Web サイト プロジェクトを右クリックして [参照の追加] をクリックします。

      [参照の追加] ダイアログ ボックスが表示されます。

    2. [参照の追加] ダイアログ ボックスの [プロジェクト] タブをクリックし、クラス ライブラリ プロジェクトを選択します。 [OK] をクリックします。

    または

    1. ソリューション エクスプローラーで、クラス ライブラリ プロジェクトを右クリックして [ビルド] をクリックします。

      クラス ライブラリ アセンブリがプロジェクトの bin\Debug フォルダーに追加されます。

    2. ASP.NET Web サイト プロジェクトを右クリックして [ASP.NET フォルダーの追加] をクリックします。 [Bin] を選択します。

      Bin フォルダーがプロジェクトに追加されます。

    3. Windows エクスプローラーで、クラス ライブラリ プロジェクトの bin\Debug フォルダーに移動します。 プロジェクト アセンブリ (<project_name>.dll ファイル) を右クリックして [コピー] をクリックします。

    4. ソリューション エクスプローラーで、ASP.NET Web サイト プロジェクトの下にある Bin フォルダーを右クリックして [貼り付け] をクリックします。

  7. 次に、モデル ファイルとマッピング ファイルを ASP.NET Web サイト プロジェクトで使用できるようにします。 そのためには、次の手順に従って、モデル ファイルとマッピング ファイルをクラス ライブラリ アセンブリにリソースとして組み込みます。 別の方法については、このトピックの最後に記載されている手順 (「ASP.NET Web サイト プロジェクトへのマッピング ファイルとメタデータ ファイルのコピー」) を参照してください。

    1. クラス ライブラリ プロジェクトの App.Config ファイルを開きます。

    2. 接続文字列情報を選択して右クリックし、[コピー] をクリックします。 たとえば、次のようなコードをコピーします。

      <add name="SchoolEntities" 
                 connectionString="metadata=res://*/School.csdl|
                                            res://*/School.ssdl|
                                            res://*/School.msl;
                                   provider=System.Data.SqlClient;
                                   provider connection string=&quot;
                                   Data Source=(local);
                                   Initial Catalog=School;
                                   Integrated Security=True;
                                   MultipleActiveResultSets=True&quot;" 
                 providerName="System.Data.EntityClient" />
      
    3. ASP.NET Web サイト プロジェクトの Web.config ファイルを開き、コピーした接続文字列情報を <connectionStrings> ノードに貼り付けます。

これで、クラス ライブラリ プロジェクトで定義されている概念モデルを使用するコードを ASP.NET Web サイト プロジェクトで記述できるようになります。

Cc716677.note(ja-jp,VS.100).gif注 :
ソリューションをビルドする前に、新しく追加したプロジェクトをスタートアップ プロジェクトとして設定する必要が生じる場合があります。その場合は、ソリューション エクスプローラーでプロジェクトを右クリックし、[スタートアップ プロジェクトに設定] をクリックします。

ASP.NET Web サイト プロジェクトへのマッピング ファイルとメタデータ ファイルのコピー

ここでは、ASP.NET Web サイト プロジェクトにモデル ファイルとマッピング ファイルをコピーするための 2 つの方法について説明します。 ここで説明するどちらの方法も、上記の手順の手順 7. の代わりに使用できます。 最初の手順では、ファイルを ASP.NET Web サイト プロジェクトの Bin フォルダーにコピーする方法を説明し、2 番目の手順では、ファイルを App_Data フォルダーにコピーする方法を説明します。 これらのいずれかの方法を使用する場合は、モデル ファイルとマッピング ファイルをクラス ライブラリ アセンブリにリソースとして組み込まないでください。

ASP.NET Web サイト プロジェクトの Bin フォルダーにモデル ファイルとマッピング ファイルをコピーするには

  1. クラス ライブラリ プロジェクトの .edmx ファイルをダブルクリックします。 ADO.NET Entity Data Model デザイナー (エンティティ デザイナー) で .edmx ファイルが開きます。

  2. デザイン画面の空の領域を右クリックし、[プロパティ] をクリックします。

  3. [プロパティ] ウィンドウで、[メタデータ成果物の処理] プロパティの値を [出力ディレクトリにコピー] に設定します。 この値を選択すると、エンティティ デザイナーによって、クラス ライブラリの App.Config ファイル内の接続文字列が相対ファイル パスに変更されます。

  4. ソリューション エクスプローラーで、クラス ライブラリ プロジェクトを右クリックして [ビルド] をクリックします。

  5. Windows エクスプローラーで、クラス ライブラリの出力ディレクトリ (bin\Debug フォルダー) に移動し、.csdl、.ssdl、および .msl ファイルをコピーします。

  6. ASP.NET Web サイト プロジェクトの下にある Bin フォルダーを右クリックして [貼り付け] をクリックします。

    Cc716677.note(ja-jp,VS.100).gif注 :
    プロジェクトに Bin フォルダーがない場合は、ソリューション エクスプローラーでプロジェクトを右クリックし、[ASP.NET フォルダーの追加] をポイントして [Bin] をクリックすることによって追加できます。

  7. クラス ライブラリ プロジェクトの App.Config ファイルを開きます。 接続文字列情報を選択して右クリックし、[コピー] をクリックします。

  8. ASP.NET Web サイト プロジェクトの Web.config ファイルを開き、コピーした接続文字列情報を <connectionStrings> ノードに貼り付けます。

  9. 接続文字列のメタデータ エントリを、先頭に ~\bin\ が付くように変更します。 たとえば、コピーして変更した接続文字列のエントリは次のようになります。

    <add name="SchoolEntities" 
             connectionString="metadata=~\bin\School.csdl|
                                        ~\bin\School.ssdl|
                                        ~\bin\School.msl;
                               provider=System.Data.SqlClient;
                               provider connection string=&quot;
                               Data Source=(local);
                               Initial Catalog=School;
                               Integrated Security=True;
                               MultipleActiveResultSets=True&quot;" 
             providerName="System.Data.EntityClient" />
    

ASP.NET Web サイトの App_Data フォルダーにモデル ファイルとマッピング ファイルをコピーするには

  • モデル ファイルとマッピング ファイルを App_Data フォルダーにコピーする手順は、Bin フォルダーにコピーする手順とほとんど同様です。 ただし、以下の 2 つの重要な違いがあります。

    • .csdl、.ssdl、および .msl ファイルをコピーするフォルダーは、Bin フォルダーではなく、ASP.NET Web サイト プロジェクトの App_Data フォルダーにします (上記の手順 6.)。

      メモ   プロジェクトに App_Data フォルダーがない場合は、ソリューション エクスプローラーでプロジェクトを右クリックし、[ASP.NET フォルダーの追加] をポイントして [App_Data] をクリックすることによって追加できます。

    • クラス ライブラリの App.Config ファイルから ASP.NET Web サイトの Web.config ファイルに接続文字列情報をコピーした後 (上記の手順 7. および 8.)、メタデータ エントリを変更して先頭に付ける文字列は |DataDirectory| にします。 たとえば、コピーして変更した接続文字列のエントリは次のようになります。

      <add name="SchoolEntities" 
               connectionString="metadata=|DataDirectory|\School.csdl|
                                          |DataDirectory|\School.ssdl|
                                          |DataDirectory|\School.msl;
                                 provider=System.Data.SqlClient;
                                 provider connection string=&quot;
                                 Data Source=(local);
                                 Initial Catalog=School;
                                 Integrated Security=True;
                                 MultipleActiveResultSets=True&quot;" 
               providerName="System.Data.EntityClient" />
      

参照

その他のリソース

Entity Data Model ツールを使用した配置タスク
Entity Data Model ツールのタスク
Entity Data Model ツールのシナリオ
Connection Strings