ベストアンサー
POCO は、昔ながらの CLR(共通言語ランタイム)オブジェクトです。基本的にはドメイン内のエンティティです。エンティティフレームワークでは、通常、データベースファーストモデルではなくコードファーストモデルで役立ちます。このクラスは、特定のフレームワークまたはテクノロジーの機能を継承しません。これは単純なパブリッククラスであり、プロパティとメソッドのみが含まれています。これらのメソッドは、データベースからのデータの保存や取得などの永続的なロジックを実装していません。これらのクラスは、永続性無視クラスとも呼ばれます。基本的に、データベーステーブルの行と列と通信するためのレイヤーとして機能します。
Pocoクラスの例
public class Group
{
public int ID {get;セットする; }
public string GroupName {get;セットする; }
public ApplicationUser Member {get;セットする; }
public string GroupDescription {get;セットする; }
public ICollection
}
POCOはDTO [設計]
ADTOよりも優れた動作をします ” ■唯一の目的は状態を転送することであり、動作することはありません。このパターンの使用例については、MartinFowlerの DTOの説明を参照してください。
一方、POCOはOOPのルールに従います。状態およびの動作が必要です(必須ではありません)。POCOは、MartinFowlerによって造られたPOJOから取得されます[ anecdote here ]。彼は、フレームワークの重いEJB実装を拒否することをよりセクシーにする方法としてPOJOという用語を使用しました。POCOは.Netの同じコンテキストで使用する必要があります。フレームワークに指示させないでください。オブジェクトのデザイン。
.NETとエンティティフレームワークの詳細については、YouTubeチャンネルをご覧ください
回答
POCO(プレーンオールドCLRオブジェクト)は単にドメインのエンティティです。通常、エンティティフレームワークを使用すると、エンティティが自動的に生成されます。これはすばらしいことですが、残念ながらこれらはエンティティには、SOC(懸念の分離)に明らかに反するデータベースアクセス機能が散在しています。POCOは、データアクセス機能のない単純なエンティティですが、すべての EntityObject aの機能を提供します。 >機能的
- 遅延読み込み
- 変更の追跡
これが良いスタートです
コードジェネレーターを使用して、既存のエンティティフレームワークプロジェクトからPOCOを簡単に生成することもできます。