【发布时间】:2011-09-02 23:51:11
【问题描述】:
我上个月问过previous question,关于实体是否应该访问存储库,虽然看起来大多数人认为他们不应该,但我不得不承认我很难被说服。
我有一个用例,我真的想不出任何(合理)方法来执行逻辑而不在我的实体中注入存储库:
我们有一个Store,它被分配了一个Zone(城市、地区、... - 用户定义)。
为了减少负责将 Store 添加到数据库的员工的工作量,并确保一致性,我们不要求他选择要添加 Store 的 Zone。他只是放大地图,点击确定商店位置,然后保存。然后,应用程序必须找到与该位置最相关的区域。
我目前拥有的是这样的:
class Store
{
protected Zone zone;
protected Point location;
protected ZoneRepository zoneRepository;
public void setLocation(Point location)
{
Zone matchingZone = this.zoneRepository.findByLocation(location);
if (matchingZone == null) {
throw new ApplicationException(
"The store location must be within a zone boundary");
}
this.location = location;
this.zone = matchingZone;
}
}
您是否有任何 可靠 替代方案来支持普遍接受的观点,即这种设计本质上是不好的?
【问题讨论】:
标签: orm domain-driven-design entity repository-pattern ddd-repositories