2012-01-18 15 views

答えて

1

エンティティはビジネスロジックの一部です。エンティティでは、ビジネスルールを定義します。

これらは、使用するデータアクセスの種類を知らないようにする必要があります。これは、リポジトリパターンを使用して行うことができます。あなたのBLLでは、エンティティに作用するリポジトリインタフェースを定義します。別のインフラストラクチャプロジェクトでは、リポジトリの実装を定義します。

エンティティをGUIに渡す場合は、選択の余地があります。時には、データをビューに渡すために特殊な細工されたクラスを使用することは有益ですが、小さなプロジェクトではエンティティをGUIに直接渡すことができます。

+0

私はあなたに同意します。私はあなたがMicrosoft Entity Frameworkを使用するのを見ます。 (私は間違っていますが)、Entity FrameworkはDALにefinedされている必要があります。そして/またはあなたが使用するデータアクセスのタイプを知らないわけではありません。 –

+0

私はC#/ Entity Framework開発者です:) Entity Frameworkはさまざまなコーディングスタイルをサポートしています。データベースファースト、モデルファーストまたはコードファーストを使用できます。コードファーストはデータベースを完全に無知にし始める最も良い解決法を持っています。データベースとモデルは、最初はデータベース無知であるPOCOオブジェクトを出力するように設定できます。結局、エンティティを含む単一のプロジェクトとデータベースインフラストラクチャを持つ別のプロジェクトが完成します。 –

1

エンティティを使用する方法によって異なります。単純なPOCOオブジェクトであれば、データベースからDTOとしてアプリケーションに使用されているので、最適な場所はDALになると思います。エンティティをビジネスロジックの一部のように使用したいと思っていて、それが機能しているなら、BLLが最適な場所になります。しかし、私はそれがGUIで使用され、定義されるべき場合があるとは思わない。

私はGUIのためにViewModelを持つことをお勧めします。これは、EFを使用するときは、何らかの形でSQLとやりとりすることを意味するためです(ほとんどの場合)。したがって、データは正規化されます。一方では、何度もGUIのための非正規化データが必要です。なぜ私はGUIのためにViewModelを使うのが好きなのですか?

1

どちらかの2つの場所で

それを定義することができ、データアクセス層に

1

それらを定義し、新たな層モデル/エンティティ(優先)

または

を作成し、私は言う:に自分の層。 GUI、ビジネス層、データアクセス層はすべてエンティティを使用します。しかし、GUIはデータアクセス層に依存せず、データアクセス層はサービス層に依存しない。したがって、エンティティは独自のドメイン層に属している必要があります。

関連する問題