
[英]Where should I put commonly used data access code with logic not fitting to Repository when using Service classes on top of Repository/UnitOrWork?
[英]How do I name classes that a Repository uses for data access?
我从事编程已经很多年了,最近我一直在尝试应用域驱动设计中的一些想法,但是我仍然很难为系统的某些部分确定好名字。
这是一个例子。
我有一个返回“计算机”对象的WCF Web服务。 该对象是包含子实体的聚合根。
子实体是从两个不同的数据库以及Active Directory中加载的。
现在,我为每个实体“ ComputerAssetRepository”,“ DeploymentRepository”,“ DirectoryRepository”等都有单独的存储库类,然后有一个“ ComputerRepository”,它调用每个子存储库并将结果返回到“计算机”聚合根实体中。
我可能应该只有一个“ ComputerRepository”,而其他类仅负责从各种来源进行数据访问。 由于它们需要通用的存储库功能,因此FindById / Add / Remove / Contains等被称为存储库。
这些班级有更好的名字吗?
我认为正确的答案取决于ComputerAsset
, Deployment
, Directory
和其他类似的子实体是否是与Computer
相同的全局可访问聚合。
无论哪种方式,我认为它们都应该拥有自己的存储库,并且我认为它们已经被适当地命名。 在DDD意义上,“存储库”仅是指遍历机制,通过该机制可以使用现有对象(工厂处理新对象的创建)。 但是,如果不打算将它们在全球范围内访问,则只需将这些存储库置于ComputerRepository
内部即可。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.