领域驱动设计 – 什么是在域驱动设计(DDD)中建模查找表的实用方
我只是学习DDD(埃里克·埃文斯书在我面前开放),我遇到一个问题,我找不到答案。当你只是想得到一个简单的查找记录列表时,你在DDD中做什么?
例如, EmployeeID:123 例如,假设您有一个Employee域对象,一个IEmployeeRepository接口和一个EmployeeRepository类。这将由UI用于显示员工和个人详细信息的列表。在UI中,您希望使用员工居住的州和县的下拉菜单。可用县将根据选择的状态进行过滤。 不幸的是,数据库表和UI看起来非常不同。在tblEmployees中,它包含州代码= AK和县代码= 02130,而不是州和县名。 旧的方式(在我开始这个DDD任务之前)将是非常简单的,只需创建2个查询,并使用DataReader填充下拉列表。下拉列表中的显示下面是值,它会自动在表单发布中使用。 有了DDD,我不知道你应该怎么做。我首先创建状态和县对象以及存储库的存储库和接口。然而,在hbm.xml文件中编写4个类2接口和管道员工业务对象看起来像2个下拉列表的2个查询的过度。有一个更好的方法,不是吗?我不会改变州或县表中的记录,即使我做了,也不会通过这个应用程序。所以我真的不想创建业务对象的州和县,如果我不必。 我看到的最简单的解决方案是使用返回字典的方法创建一个辅助类,例如GetStatesAll(),GetState()和GetCounties()和GetCounty(),但是从DDD角度来看只是感觉错误。 请帮忙。如何使用DDD而不需要进行简单的查找? 最终解决方案 我的结论: >查找表是NEVER值对象,因为查找表始终具有标识。如果他们没有身份,你会有重复,这不会有什么意义。
你可能想看看
Command Query Separation的概念。我不担心类型的存储库查找值,但我仍然可能使用DTO类型的数据集等等…
你可能想花一些时间阅读Greg Young的博客从this one开始到现在。他不专门讨论填充查找数据,但他经常谈论不通过在存储库上的类型化方法处理应用程序的读取/报告功能。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |