2

私は 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 を定義する必要があると考えていますが、これをコーディングする方法について混乱しています。

おそらく設計パターンを提案して、これを行うためにコードを構造化する方法を簡単に説明できますか?

4

1 に答える 1

0

私はデータファーストのアプローチをとっています

各車が部品データを取得する方法は異なります (REST、WCF、CSV ファイルなど)。

データ ストアのタイプが可変であり、おそらく再利用可能なモデルが必要であることを考慮すると、最初に EF データベースを使用するという選択は適切ではないと思います。最初にコードを使用することをお勧めします。

そこで、Car を拡張するクラスを定義し、その特定の車の部品を取得するための特定のビジネス ロジックを持つ "GetParts()" メソッドを定義したいと考えています。

モデルは持続性を無視する必要があります。データ ストア固有の GetParts() を拡張またはハードコーディングすることを考えていません。

おそらくデザインパターンを提案していますか?

おそらく、リポジトリを使用して、データ マッピングに抽象化のレイヤーを提供することを検討してください。

于 2013-01-19T03:01:00.070 に答える