3

データベース内のデータの表現ではなく、ビジネス目的で必要なカスタムメイドのエンティティをどうするかについて質問があります。

私のソリューションは次のように構成されています。

  • エンティティアセンブリ(POCOオブジェクト)
  • リポジトリアセンブリ(EFコードファースト)
  • ビジネスレイヤーアセンブリ
  • UIアセンブリ(MVC)

エンティティアセンブリには2つのエンティティがAありB、ビジネスロジックの特定の目的のために、(他のプロパティの中でも)両方を含むオブジェクトを返す必要があります。

class X
{
   public A[];
   public B[];
}

このオブジェクトをリポジトリから直接返す必要がありますか?または、ビジネスレイヤーは、を呼び出してからrepo.GetA作成repo.GetBXて返す必要がありますか?

この場合、ビジネスレイヤーにオブジェクトを作成するのが理にかなっているかもしれません。しかし、クラスがとの「groupby」だった場合はどうなるでしょXうか。次に、リポジトリからそれを返す方が理にかなっています。AB

特効薬はないと思いますが、ガイドラインはありますか?

乾杯。

4

2 に答える 2

4

Xどのレイヤーが属しているのか、そしてそれが実際に何であるのかを理解する必要があると思います:

  • ドメインエンティティ、つまり、ユビキタス言語からドメインの概念を伝えます。その場合、はおそらく子エンティティのリストをX含む集約ルートです。データに加えてメソッドも含まれる場合があります。のリポジトリは、オブジェクトとともにAコレクションとBコレクションを永続化し、またはのリポジトリはありません。ABXXAB

  • UI固有またはユースケース固有のデータ構造。この場合、ドメインレイヤーは。とは関係がありませんX。アプリケーションまたはUIレイヤーはABインスタンスとXオブジェクトの間のマッピングを処理します。

于 2013-01-09T14:11:46.793 に答える
2

私の理解では、リポジトリは常にビジネスタイプのオブジェクトを処理する必要があります。あなたにとって、これはタイプXのオブジェクトを返すリポジトリと同等です。Xの作成方法はリポジトリの仕事です。これは、2つのデータマッパーがAを取得してからBを取得し、結果またはその他の適切なプロセスをマージすることで発生する可能性があります。

于 2013-01-09T12:26:01.340 に答える