C# レイヤード アプリケーションを設計していますが、ドメイン オブジェクトがリポジトリと ServiceLayer について認識できるかどうかを知りたいです。
そうでない場合 - Article.CalculatePrice() や Offer.CalculatePrice などの複雑な関数を解決するにはどうすればよいですか。
私はEF5を使用しています。
更新: 私のシナリオは次のとおりです: 想像を絶するルールとある種の奇妙な価格計算シナリオに従わないレガシー DB の上にこれを構築する必要があります。
たとえば、私は を持っていますがArticle A { Type: Curtain, Color: Blue, Dimension: 200cm }
、DB に特定の価格が定義された記事はありません -> そのため、PriceGroups
どの価格設定ルールが適用されるかを調べる必要があります。
たとえば、記事に適用される次のグループが存在する可能性があります。
- Article A { Type: Curtain, Color: Blue, Dimension: 200cm } <-- does not exist
- PriceGroup { Type: Curtain, Color: Blue, Dimension: NULL, Price: -5 EUR (*relative* price) }
- PriceGroup { Type: Curtain, Color: NULL, Dimension 200cm, Price 25 EUR (*absolute* price) }
つまり、PriceGroup と Article はどのような方法でも集約できず、価格グループは階層的に整列していませんが、仕様によって適用されます。
だから:私見 ArticlePriceService は PriceGroups について知る必要があるため、 ArticlePrice が見つからない場合は、グループから計算された Price を返す必要があります。したがって、このすべてをドメイン オブジェクトに入れると、ArticleDO は ArticlePriceService について知る必要があり、ArticleDO は PriceGroupService について知る必要があります。
この問題を解決する方法が本当に混乱しています。例または私を提供してみてください..