24

Should value object hold reference to entity in DDD methodology?

EDIT

@Dmitry:

This is probably my case. Here I attach class diagram where the Account hold references to collection of IInvoiceable items. I treat with Tenant as entity, but it owns only 1 account and i dont think that Account needs identity. its part of Tenant. Or should I treat it as Entity? To me it doesnt make sense.

enter image description here

Ivan
  • 1,254
  • 12
  • 25

2 Answers2

41

Yes it can. This would be a relatively obscure case but DDD allows for it and it can be useful. From the DDD book by Eric Evans:

VALUE OBJECTS can even reference ENTITIES. For example, if I ask an online map service for a scenic driving route from San Francisco to Los Angeles, it might derive a Route object linking L.A. and San Francisco via the Pacific Coast Highway. That Route object would be a VALUE, even though the three objects it references (two cities and a highway) are all ENTITIES.

page #98

Dmitry
  • 17,078
  • 2
  • 44
  • 70
  • thanks, I edited my post, maybe that will reveal that I made somewhere mistake – Ivan Feb 29 '12 at 19:22
  • It might be the case that you need to merge Tenant and Account into one Entity - TenanatAccount. Or you may have Tenant be Aggregate root and Account be an Entity inside the Aggregate root. Or your Account may still be a Value object - and hold references to other Entities. Its hard to give you an advice because we don't know enough about your domain. None of this approaches violates DDD, so choose one that makes you feel best right now and change it later, as your understanding of domain evolves. – Dmitry Feb 29 '12 at 19:31
  • thanks a lot. I probably merge them together because solo Tenant looks too anemic. – Ivan Feb 29 '12 at 19:33