レイヤ(GUI、BLL、DAL)エンティティクラスを定義する必要があるビジネスモデルを作成するときは、どのレイヤエンティティクラスを定義する必要がありますか?
答えて
エンティティはビジネスロジックの一部です。エンティティでは、ビジネスルールを定義します。
これらは、使用するデータアクセスの種類を知らないようにする必要があります。これは、リポジトリパターンを使用して行うことができます。あなたのBLLでは、エンティティに作用するリポジトリインタフェースを定義します。別のインフラストラクチャプロジェクトでは、リポジトリの実装を定義します。
エンティティをGUIに渡す場合は、選択の余地があります。時には、データをビューに渡すために特殊な細工されたクラスを使用することは有益ですが、小さなプロジェクトではエンティティをGUIに直接渡すことができます。
エンティティを使用する方法によって異なります。単純なPOCOオブジェクトであれば、データベースからDTOとしてアプリケーションに使用されているので、最適な場所はDALになると思います。エンティティをビジネスロジックの一部のように使用したいと思っていて、それが機能しているなら、BLLが最適な場所になります。しかし、私はそれがGUIで使用され、定義されるべき場合があるとは思わない。
私はGUIのためにViewModelを持つことをお勧めします。これは、EFを使用するときは、何らかの形でSQLとやりとりすることを意味するためです(ほとんどの場合)。したがって、データは正規化されます。一方では、何度もGUIのための非正規化データが必要です。なぜ私はGUIのためにViewModelを使うのが好きなのですか?
どちらかの2つの場所で
それを定義することができ、データアクセス層に
それらを定義し、新たな層モデル/エンティティ(優先)
または
を作成し、私は言う:に自分の層。 GUI、ビジネス層、データアクセス層はすべてエンティティを使用します。しかし、GUIはデータアクセス層に依存せず、データアクセス層はサービス層に依存しない。したがって、エンティティは独自のドメイン層に属している必要があります。
- 1. 返品タイプを定義する必要がありますか?
- 2. preg_match、$ matchesを定義する必要がありますか?
- 3. インスタントアプリケーションのテーマはどのモジュールで定義する必要がありますか?
- 4. Android:OnSharedPreferenceChangeListenerをどこに定義/登録する必要がありますか
- 5. プロパティでメソッドを定義する必要があります
- 6. Microsoft.AspNetCore.Mvc.Rendering.SelectListGroup 'でプライマリキーを定義する必要があります
- 7. Angular2エラートークンを定義する必要があります
- 8. エンティティタイプ 'Microsoft.AspNetCore.Mvc.Rendering.SelectListGroup'は、プライマリキーを定義する必要があります。
- 9. パラメータを定義する必要があります
- 10. 番号を再定義する必要はありますか?
- 11. 親プロジェクトでプリプロセッサ定義を再定義する必要はありますか?
- 12. 、なぜ私はハッシュを定義する必要がありますが、変数を定義する必要はありませんか?
- 13. 定義済みのものを使用する必要がありますか?
- 14. TypeScriptモジュールのTypeScript定義を記述する必要がありますか?
- 15. 別のファイルからオブジェクトを定義する必要があります
- 16. TrackByは関数である必要がありますが、未定義です。
- 17. 契約で抽象メソッドを定義する必要がありますか?
- 18. 初期化リストをヘッダファイルに定義する必要がありますか?
- 19. なぜVBAマクロで変数を定義する必要がありますか?
- 20. constexpr関数を順方向に定義する必要がありますか?
- 21. ワークフロー定義を再利用する必要がありますか?
- 22. Java enumsにnull/unknown値を定義する必要がありますか?
- 23. カスタム損失機能でbackward()を定義する必要がありますか?
- 24. なぜ `path`定義をブラウズする必要がありますか?
- 25. AndroidライブラリでtargetSdkVersionを定義する必要がありますか?
- 26. Keystoneが必要なGraphQLは、出力タイプである必要がありますが、フィールドタイプは未定義です。
- 27. mainActivity.javaのすべての関数を定義する必要があります
- 28. CSSは<head>タグ内に定義する必要がありますか?
- 29. 本当にJavaの最小ヒープサイズを定義する必要があります
- 30. Angular2のカスタム入力 - トークンを定義する必要があります
私はあなたに同意します。私はあなたがMicrosoft Entity Frameworkを使用するのを見ます。 (私は間違っていますが)、Entity FrameworkはDALにefinedされている必要があります。そして/またはあなたが使用するデータアクセスのタイプを知らないわけではありません。 –
私はC#/ Entity Framework開発者です:) Entity Frameworkはさまざまなコーディングスタイルをサポートしています。データベースファースト、モデルファーストまたはコードファーストを使用できます。コードファーストはデータベースを完全に無知にし始める最も良い解決法を持っています。データベースとモデルは、最初はデータベース無知であるPOCOオブジェクトを出力するように設定できます。結局、エンティティを含む単一のプロジェクトとデータベースインフラストラクチャを持つ別のプロジェクトが完成します。 –