【发布时间】:2013-06-13 03:37:06
【问题描述】:
我正在设计一个 C# 分层应用程序,我想知道我的域对象是否可以了解存储库和 ServiceLayer。
如果不是 - 我该如何解决 Article.CalculatePrice() 或 Offer.CalculatePrice 等复杂函数,恕我直言,它们应该遍历所有项目并汇总 Item.GetPrice()。
顺便说一句,我正在使用 EF5。
更新: 我的场景如下:我必须在不遵循任何可以想象的规则和某种奇怪的价格计算场景的遗留数据库之上构建它:
例如我有一个Article A { Type: Curtain, Color: Blue, Dimension: 200cm },但没有在数据库中定义特定价格的文章 -> 所以我必须查看所谓的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,它必须返回根据组计算的价格。因此,如果我将整个内容封装在一个域对象中,我的 ArticleDO 就必须知道 ArticlePriceService,而后者必须知道 PriceGroupService?
我真的很困惑如何解决这个问题。请尝试提供一个例子或我..
【问题讨论】:
-
IMO 不,你应该在某种服务中解决这些问题
-
“PriceGroup”是您的领域专家会识别的术语吗?还是技术制造?
-
“PriceGroup”一词来自客户——最终他们必须每天使用该应用程序..
标签: entity-framework architecture service-layer repository