2016-08-12 4 views
0

私の以前のプロジェクトアーキテクトによると、エンティティフレームワークからエンティティオブジェクトを分離する方法は?

  • ビジネスサービスここでは、レイヤ
    • ビジネスロジック。
    • "エンティティ" と "データ・アクセス・レイヤー" ここで行った
  • データアクセス層
    • SQL操作にアクセスできます。
    • は "エンティティDTO" ここ
  • エンティティレイヤ
    • すべてのデータベーステーブルDTOにアクセスできます。
  • プレゼンテーション層
    • ビジネスとエンティティにアクセスできます
    • が表示
  • Entity Frameworkのを追加するための今

、私がフォローしたいデータアクセス層にアクセスできません。同じアーキテクチャ。

  • ビジネスサービスここでは、レイヤ
    • ビジネスロジック。
    • "エンティティ" と "データ・アクセス・レイヤー" ここで行った
  • データアクセス層
    • SQL操作にアクセスできます。
    • ここでEntity Frameworkの(.edmx)
  • エンティティレイヤ
    • 私はここでEntity Frameworkのクラス(EntityObject)を使用します。したがって、すべてのDTOを書き換える必要はありませんが、これでCRUDを実行しないでください。ObjectContext/Dbcontextを含めるべきではありません
  • プレゼンテーション層
    • ビジネスとエンティティにアクセスできます
    • データアクセス層(Entity Frameworkの)
    • ビューにアクセスすることはできません
+0

'dbContext.SaveChanges()'を呼び出すとCRUDが発生します。これがデータアクセスレイヤーでのみ行われる限り、あなたは良いことが必要です。 –

+0

@GeorgPatscheider私は文脈がそこにあるべきではないことを意味します.. –

+0

しかし、文脈はあなたがSQL操作を実行することを可能にします。私たちのアーキテクチャでは、ビジネス層とデータアクセス層(ビジネスロジックはDbContextとエンティティと直接連携します)を組み合わせました。 –

答えて

0

私が出したいものはほとんどありません:

  1. データアクセス層 - edmxに依存する場合、アプリケーションは密接に結合されてEntity Frameworkを使用します。可能であれば、どのORMが下に実装されているかを知らなくても、DALが抽象化としてEntityレイヤーと会話するようにデザインを作成します(インターフェイスベースのデザイン)。将来的には、比較的少ない労力で他のORMを導入することができます。

  2. ビジネスサービスレイヤがエンティティレイヤの参照を持つ必要があるのはなぜですか。それは理想的には参照を持っていて、DALだけにアクセスしなければならない。

  3. プレゼンテーションレイヤーと同じコメントです。

+0

私はPresenterでオブジェクト内のエンティティのデータにアクセスしています.->ビジネスに送る - >ビジネスは、エンティティをDALに転送する複数のビジネスロジックを行います - > DALはCRUDを行います.. –

+0

エンティティはEFクラスを意味します。プレゼンターとビジネスはEFクラスに理想的にアクセスできないものとします。少なくともプレゼンターはそれを持っていないはずです。 –

+0

データアクセス層の実装は、それが独自の実装の詳細なので、EFについて知っていなければなりません(MUST)。データ層からEFを抽象化することはまったく意味がありません。レイヤーの名前:データアクセスレイヤーを確認します。 –

関連する問題