2011-06-17 5 views
1

私はEntityフレームワークで作業を開始しています。以下は、私がEFとやりとりするためのプロジェクトを整理した方法です。私はちょうど私が正しい方向に向かっているかどうかを知りたい。より良いアプローチを提案してください。 UIがDALを参照してはならないようなアーキテクチャのことは無視してください。これはちょうど「知っている」プロジェクトです。 :)は、これがEntity Frameworkとやりとりする正しい方法ですか?

これは私がやっていることです:

DALのための1つのプロジェクト。ここでは、すべてのDB操作がEFを使用して実行されます。

モデル - ビジネスエンティティクラス。 EFのOrderオブジェクトを返す代わりに、Entity Class of Modelを返します。 (ビジネスエンティティをEFエンティティにマップする方法はありますか?)

UI - これはDALを呼び出し、処理を完了します。

プロジェクト1 - DAL

このプロジェクトはまた、私のEDMXファイルが含まれています。

public class DALRepository 
{ 

    OrderEntities orderEntitiesContext = new OrderEntities(); 

    public IQueryable<Model.OrderModel> GetOrders() 
    { 
     return orderEntitiesContext.Orders.Select(o => new Model.OrderModel { OrderName = o.OrderName, Id = o.OrderID }); 
    } 
} 

プロジェクト2 - モデル

public class OrderModel 
{ 
    public long Id { get; set; } 
    public string OrderName { get; set; } 
} 

プロジェクト3 - UI

public partial class OrderList : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     DAL.DALRepository dal = new DAL.DALRepository(); 
     GridView1.DataSource = dal.GetOrders(); 
     GridView1.DataBind(); 
    } 
} 

答えて

3

DAL以外のユニットテストを有効にするには、DALの外部で必要なAPIを使用してinterfacesプロジェクトを追加し、DALプロジェクトを使用してこれらのインターフェイスを実装する実装プロジェクトを追加することを検討してください。

+0

正しいと呼ばれることになります。それはちょうど "EFを知る"プロジェクトだと言われています。私はそれがユニットテストしたいとインターフェイスを公開しない場合、それがもたらすことができるどれだけの痛みを知っています。 :) – Asdfg

+0

はい、あなたは正しい方向に向かっています。 –

+0

小さな質問です。 Entity FrameworkとPOCOオブジェクトと呼ばれるものですか? – Asdfg

1

私はこれが優れていると思うと、あなたは正しい道です。

また、VS Solutionのアーキテクチャプロジェクトを使用して、他の開発者が不適切なプロジェクトとのクロスコールや適切なSoCの維持を制限することもお勧めします。

1

私の意見では、正しい道のりです。 投写を作成することが時々面倒であり、遅かれ早かれそのプロパティを忘れてしまいます。

これは、ターゲット・オブジェクトにソースオブジェクトからプロパティをコピーするためのフレームワークです: http://automapper.codeplex.com/

1

一つの小さな問題。 Entity FrameworkとPOCOオブジェクトと呼ばれるものですか?あなたはこのことを示しているものから、

CodeFirst

+0

私はCodeFirstが良いと思います。私は自分がしていることをより良くコントロールすることができます。 – Asdfg

関連する問題