藤本  結衣

藤本 結衣

1648854840

クラスライブラリを使用してエンティティデータモデル(.EDMX)クラスを実装する

クラスライブラリは、複数のプログラム間でコードを共有する場合に便利です。クラスライブラリは、システム機能へのアクセスを提供するために.NET Frameworkに含まれるクラス、インターフェイス、およびデータ型を含む再利用可能な型のコレクションです。コンソールアプリケーション、Windows GUIアプリケーション、ASP.NETアプリケーション、WindowsおよびWebサービス、ワークフロー対応アプリケーション、Windows通信を使用したサービス指向アプリケーション、XMLWebサービスなどのアプリケーションの開発に使用できます。

リアルタイムの例

  • クラスは部屋のテレビのようなもので、部屋のメンバーだけがそれを見ることができます。
  • クラスlibは、一般的な場所(都市、モール)の劇場のようなもので、誰でも見ることができます。

すべての.NETアプリケーション(C#.Net、Asp.net、Asp.net MVC)でクラスファイルを作成できます。.NETでは、これをDLL(ダイナミックリンクライブラリ)と呼びます。アプリケーションでクラスを作成する場合、このクラスはこのアプリケーション内でのみ使用でき、他のアプリケーションでは使用できません。クラスライブラリを作成すると、すべてのアプリケーションで使用できます。

Class Libをいつ作成して使用する必要がありますか?

異なるアプリケーションで同じコードを記述している場合、その時点でクラスライブラリを作成し、それをすべてのアプリケーションで使用できます。 

.NETおよびJavaのクラスLib

  • Javaでは、パッケージと呼ばれます。
  • .NETでは、これをDLL(ダイナミックリンクライブラリ)と呼びます。

このセッションを行う前に、以下に説明するように、以前のセッションにアクセスしてください。リンクを参照してください。

説明

このセッションでは、クラスライブラリを使用してエンティティデータモデル(.EDMX)クラスを実装し、SatyaConsumingApiやSatyaWebApiのように以前に行ったように複数のプロジェクトで使用する方法を示します。.EDMXファイルは以前にSatyaWebApiプロジェクトで作成されたため、SatyaWebApiプロジェクトでのみ使用でき、他のプロジェクトでこの機能にアクセスするには非常に面倒です。そのため、クラスライブラリは

より速くするための最良の選択。

従うべきステップ。

ステップ1

モデルクラスを別のプロジェクトに分離するためのエンティティと呼ばれるクラスライブラリプロジェクトを作成します。

ソリューションエクスプローラーからソリューションを右クリック>追加>新しいプロジェクト>クラスライブラリ>名前の入力(ここでは「エンティティ」)>追加。ここでは、以前に作成したSatyaWebApiプロジェクトから、別のモデルクラス用の別の(クラスライブラリ)プロジェクトを別のプロジェクトに追加します。したがって、モデルクラスを複数のプロジェクトに再利用できます。 

作成中に、Class1.csはクラスライブラリ(エンティティ)内で自動生成されます。したがって、それを削除する必要があります。

 

ステップ2

EFDbContextジェネレータファイルを追加します。

[エンティティ]>[追加]>[新しいアイテムの追加]に移動し、[データ]タブで[EF5.xDbContextジェネレーター]を選択します>名前「Satyadatabasemodel.tt」を入力します>[OK]。

 

Satyadatabasemodel.ttファイルを開き、const string inputFile = @ "../ SatyaWebApi /Satyadatabasemodel.edmx" ;の値を変更します。これは、SatyaWebApiで以前に作成された.EDMXファイルのパスです。

 

Satyadatabasemodel.ttファイルを右クリックして、カスタムツールを実行します。ここで、「SatyaWebApi」はプロジェクト名、「Satyadatabasemodel.edmx」はモデル名です。 

 

VisualStudioのカスタムツール>>

カスタムツールは、既存のファイルからファイルを生成することを目的としているため、ファイルジェネレーターです。このツールの本来の目的は、1つのファイルのみを生成することでしたが、カスタムコードを作成することで、複数のファイルを生成できます。これはファイルジェネレータであり、コードビハインドファイルを作成します。ComVisible DLLファイルに保存され、レジストリを使用します。

エンティティクラスライブラリプロジェクトで2つの自動生成ファイルを取得できます。

 >> Satyadatabasemodel.tt 

  • Employee.cs
  • Satyadatabasemodel.cs

関連するデータベースオブジェクトプロパティを使用して、エンティティデータモデルクラス「Employee.cs」のコードを自動生成します。ここで、Employeeは、複数のプロジェクトで使用できる部分的なクラスです。
 

namespace Entities  
{  
    using System;  
    using System.Collections.Generic;  
      
    public partial class Employee  
    {  
        public int EmployeeID { get; set; }  
        public string FirstName { get; set; }  
        public string LastName { get; set; }  
        public string EmailID { get; set; }  
        public string City { get; set; }  
        public string Country { get; set; }  
    }  
}  

ステップ3

SatyaWebApiプロジェクトのSatyadatabasemodel.edmxの下にあるSatyadatabasemodel.ttファイルを削除します。 

SatyaWebApiプロジェクトのSatyadatabasemodel.edmxを展開します>>Satyadatabasemodel.ttを右クリックします>>削除します。

 

ステップ4

Satyadatabasemodel.edmxの下のSatyadatabasemodel.Context.ttのカスタムツール名前空間の値を変更します。

ソリューションエクスプローラーに移動し、Satyadatabasemodel.edmxの下のSatyadatabasemodel.Context.ttを選択し、右クリックして[プロパティ]に移動し、[カスタムツールの名前空間]の値を入力します。クラスライブラリプロジェクト名は「エンティティ」>「保存」です。 

 

ステップ5

新しく作成されたプロジェクト(エンティティ)の参照をSatyaWebApiアプリケーションに追加します。 

SatyaWebApiの参照を右クリック>参照の追加...>[ソリューション]>[OK]でプロジェクト(ここでは「エンティティ」)を選択します。 

 

ステップ6

新しく作成されたプロジェクト(エンティティ)の参照を、「SatyaConsumingApi」という名前のWebアプリケーションまたはクライアントアプリケーションに追加します。

SatyaConsumingApiの参照を右クリック>参照の追加...>[ソリューション]>[OK]でプロジェクト(ここでは「エンティティ」)を選択します。

 


したがって、プロジェクト「CrystalGranite2016Entities」のようにデータコンテキストを使用する場合、またはプロジェクトで「Employee」としてエンティティデータモデルクラスファイルを使用する場合は、以下に説明するように、クラスライブラリ名と同じ名前の名前空間を使用する必要があります。

using Entities; 

ここで、エンティティはクラスライブラリ名に他なりません。そうでない場合、「usingディレクティブまたはアセンブリ参照がありませんか?」というエラーが発生します。

まとめ

  • クラスライブラリの概要。
  • クラスライブラリを使用する利点。
  • クラスライブラリに.EDMXファイル参照を追加します。
  • 複数のプロジェクトで名前空間としてクラスライブラリを実装します。

ソース:https ://www.c-sharpcorner.com/article/reuse-the-entity-data-model-classes-of-webapi-project-to-multiple-projects-using/ 

#api #aspdotnet #entityframework 

What is GEEK

Buddha Community

クラスライブラリを使用してエンティティデータモデル(.EDMX)クラスを実装する
藤本  結衣

藤本 結衣

1648854840

クラスライブラリを使用してエンティティデータモデル(.EDMX)クラスを実装する

クラスライブラリは、複数のプログラム間でコードを共有する場合に便利です。クラスライブラリは、システム機能へのアクセスを提供するために.NET Frameworkに含まれるクラス、インターフェイス、およびデータ型を含む再利用可能な型のコレクションです。コンソールアプリケーション、Windows GUIアプリケーション、ASP.NETアプリケーション、WindowsおよびWebサービス、ワークフロー対応アプリケーション、Windows通信を使用したサービス指向アプリケーション、XMLWebサービスなどのアプリケーションの開発に使用できます。

リアルタイムの例

  • クラスは部屋のテレビのようなもので、部屋のメンバーだけがそれを見ることができます。
  • クラスlibは、一般的な場所(都市、モール)の劇場のようなもので、誰でも見ることができます。

すべての.NETアプリケーション(C#.Net、Asp.net、Asp.net MVC)でクラスファイルを作成できます。.NETでは、これをDLL(ダイナミックリンクライブラリ)と呼びます。アプリケーションでクラスを作成する場合、このクラスはこのアプリケーション内でのみ使用でき、他のアプリケーションでは使用できません。クラスライブラリを作成すると、すべてのアプリケーションで使用できます。

Class Libをいつ作成して使用する必要がありますか?

異なるアプリケーションで同じコードを記述している場合、その時点でクラスライブラリを作成し、それをすべてのアプリケーションで使用できます。 

.NETおよびJavaのクラスLib

  • Javaでは、パッケージと呼ばれます。
  • .NETでは、これをDLL(ダイナミックリンクライブラリ)と呼びます。

このセッションを行う前に、以下に説明するように、以前のセッションにアクセスしてください。リンクを参照してください。

説明

このセッションでは、クラスライブラリを使用してエンティティデータモデル(.EDMX)クラスを実装し、SatyaConsumingApiやSatyaWebApiのように以前に行ったように複数のプロジェクトで使用する方法を示します。.EDMXファイルは以前にSatyaWebApiプロジェクトで作成されたため、SatyaWebApiプロジェクトでのみ使用でき、他のプロジェクトでこの機能にアクセスするには非常に面倒です。そのため、クラスライブラリは

より速くするための最良の選択。

従うべきステップ。

ステップ1

モデルクラスを別のプロジェクトに分離するためのエンティティと呼ばれるクラスライブラリプロジェクトを作成します。

ソリューションエクスプローラーからソリューションを右クリック>追加>新しいプロジェクト>クラスライブラリ>名前の入力(ここでは「エンティティ」)>追加。ここでは、以前に作成したSatyaWebApiプロジェクトから、別のモデルクラス用の別の(クラスライブラリ)プロジェクトを別のプロジェクトに追加します。したがって、モデルクラスを複数のプロジェクトに再利用できます。 

作成中に、Class1.csはクラスライブラリ(エンティティ)内で自動生成されます。したがって、それを削除する必要があります。

 

ステップ2

EFDbContextジェネレータファイルを追加します。

[エンティティ]>[追加]>[新しいアイテムの追加]に移動し、[データ]タブで[EF5.xDbContextジェネレーター]を選択します>名前「Satyadatabasemodel.tt」を入力します>[OK]。

 

Satyadatabasemodel.ttファイルを開き、const string inputFile = @ "../ SatyaWebApi /Satyadatabasemodel.edmx" ;の値を変更します。これは、SatyaWebApiで以前に作成された.EDMXファイルのパスです。

 

Satyadatabasemodel.ttファイルを右クリックして、カスタムツールを実行します。ここで、「SatyaWebApi」はプロジェクト名、「Satyadatabasemodel.edmx」はモデル名です。 

 

VisualStudioのカスタムツール>>

カスタムツールは、既存のファイルからファイルを生成することを目的としているため、ファイルジェネレーターです。このツールの本来の目的は、1つのファイルのみを生成することでしたが、カスタムコードを作成することで、複数のファイルを生成できます。これはファイルジェネレータであり、コードビハインドファイルを作成します。ComVisible DLLファイルに保存され、レジストリを使用します。

エンティティクラスライブラリプロジェクトで2つの自動生成ファイルを取得できます。

 >> Satyadatabasemodel.tt 

  • Employee.cs
  • Satyadatabasemodel.cs

関連するデータベースオブジェクトプロパティを使用して、エンティティデータモデルクラス「Employee.cs」のコードを自動生成します。ここで、Employeeは、複数のプロジェクトで使用できる部分的なクラスです。
 

namespace Entities  
{  
    using System;  
    using System.Collections.Generic;  
      
    public partial class Employee  
    {  
        public int EmployeeID { get; set; }  
        public string FirstName { get; set; }  
        public string LastName { get; set; }  
        public string EmailID { get; set; }  
        public string City { get; set; }  
        public string Country { get; set; }  
    }  
}  

ステップ3

SatyaWebApiプロジェクトのSatyadatabasemodel.edmxの下にあるSatyadatabasemodel.ttファイルを削除します。 

SatyaWebApiプロジェクトのSatyadatabasemodel.edmxを展開します>>Satyadatabasemodel.ttを右クリックします>>削除します。

 

ステップ4

Satyadatabasemodel.edmxの下のSatyadatabasemodel.Context.ttのカスタムツール名前空間の値を変更します。

ソリューションエクスプローラーに移動し、Satyadatabasemodel.edmxの下のSatyadatabasemodel.Context.ttを選択し、右クリックして[プロパティ]に移動し、[カスタムツールの名前空間]の値を入力します。クラスライブラリプロジェクト名は「エンティティ」>「保存」です。 

 

ステップ5

新しく作成されたプロジェクト(エンティティ)の参照をSatyaWebApiアプリケーションに追加します。 

SatyaWebApiの参照を右クリック>参照の追加...>[ソリューション]>[OK]でプロジェクト(ここでは「エンティティ」)を選択します。 

 

ステップ6

新しく作成されたプロジェクト(エンティティ)の参照を、「SatyaConsumingApi」という名前のWebアプリケーションまたはクライアントアプリケーションに追加します。

SatyaConsumingApiの参照を右クリック>参照の追加...>[ソリューション]>[OK]でプロジェクト(ここでは「エンティティ」)を選択します。

 


したがって、プロジェクト「CrystalGranite2016Entities」のようにデータコンテキストを使用する場合、またはプロジェクトで「Employee」としてエンティティデータモデルクラスファイルを使用する場合は、以下に説明するように、クラスライブラリ名と同じ名前の名前空間を使用する必要があります。

using Entities; 

ここで、エンティティはクラスライブラリ名に他なりません。そうでない場合、「usingディレクティブまたはアセンブリ参照がありませんか?」というエラーが発生します。

まとめ

  • クラスライブラリの概要。
  • クラスライブラリを使用する利点。
  • クラスライブラリに.EDMXファイル参照を追加します。
  • 複数のプロジェクトで名前空間としてクラスライブラリを実装します。

ソース:https ://www.c-sharpcorner.com/article/reuse-the-entity-data-model-classes-of-webapi-project-to-multiple-projects-using/ 

#api #aspdotnet #entityframework