私は ADO.NET のバックグラウンドを持っており、本格的なプロジェクトで初めて Entity Framework を使用したので、先に進んで VS2012 を取得し、.NET 4.5 とエンティティ フレームワーク 5 を使用しています。
私はデータファーストのアプローチを採用しており、データベースを作成し、.edmx を生成し、この方法を使用してコンテキストから POCOS を分離しました: http://allen-conway-dotnet.blogspot.co.uk/2013/01 /separating-entity-framework-poco.html
したがって、私のソリューションは次のようになります。
Data.Access (where I access the EF context and return POCOS to Business Layer)
Data.Model (where the POCOs are)
Data.Repository (where the context sites)
Presentation.Admin.Website
データベース/ POCOクラスに次のテーブルがあるとします(単なる例-実際のものではありません)
namespace Data.Model
{
using System;
using System.Collections.Generic;
public partial class Car
{
public Car()
{
this.Parts= new HashSet<Parts>();
}
public int ID { get; set; }
public string Manufacturer { get; set; }
public string Model{ get; set; }
public Nullable<bool> Enabled { get; set; }
public virtual ICollection<Parts> Parts{ get; set; }
}
}
ここで、データベース内のすべての車に Web サービス、または XML を返し、利用可能な部品のリストを提供する URL へのリンクがあるとします。各車が部品データを取得する方法は異なります (REST、WCF、CSV ファイルなど)。
そこで、Car を拡張するクラスを定義し、その特定の車の部品を取得するための特定のビジネス ロジックを持つ "GetParts()" メソッドを定義したいと考えています。
また、データベースからすべての車を取得してループし、各車の GetParts メソッドを呼び出してデータを取得できるようにしたいと考えています。
GetParts メソッドを宣言し、何らかの方法で Car POCO を組み込むインターフェイスまたは抽象クラス ICar を定義する必要があると考えていますが、これをコーディングする方法について混乱しています。
おそらく設計パターンを提案して、これを行うためにコードを構造化する方法を簡単に説明できますか?