次の方法で共有


クラス ライブラリで定義されたモデルを使用する方法

このトピックでは、Visual Studio 2008 クラス ライブラリ プロジェクトで定義された Entity Data Model (EDM) をプロジェクトで使用する方法について説明します。

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

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

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

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

  2. EDM をクラス ライブラリ プロジェクトに追加します。

    新しい EDM を作成してプロジェクトに追加する方法については、「Entity Data Model を新規作成する方法」を参照してください。既存の EDM をプロジェクトに追加する方法については、「既存の 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> ノードに貼り付けます。

    [!メモ]

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

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

[!メモ]

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

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

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

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

  2. EDM をクラス ライブラリ プロジェクトに追加します。

    新しい EDM を作成してプロジェクトに追加する方法については、「Entity Data Model を新規作成する方法」を参照してください。既存の EDM をプロジェクトに追加する方法については、「既存の 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 サイト プロジェクトで、クラス ライブラリ プロジェクトで定義された EDM を使用するコードを記述できるようになります。

[!メモ]

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

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 フォルダを右クリックして [貼り付け] をクリックします。

    [!メモ]

    プロジェクトに 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 ツールのタスク
ADO.NET Entity Data Model デザイナのシナリオ
接続文字列 (Entity Framework)