Dave
Dave

Reputation:

How to model subsets of inter-object relationships

Im new to working with Domain Models so forgive me for asking an elementary question.

If a Domain Object has a 1-many relationship with another Domain Object but logic that uses the first object works with only a subset of that objects related objects, what is the best way to expose this subset?

For example, say a Person is related to many Orders but some external logic needs to examine only the "Dispatched" Orders associated with a Person. Should the Person have a DispatchedOrders property, along with other properties for other subsets (such as CompletedOrders etc) or is this bad design? Assume for performance reasons I cant filter the objects in memory and must use SQL to pull back only the subset I'm interested in.

Thanks

Upvotes: 0

Views: 245

Answers (2)

David Robbins
David Robbins

Reputation: 10046

I think you have the right idea - DispatchedOrders would tell me precisely what collection of object you are returning to me. As Curt said, you are in good spot as you can use SQL / stored procedure to fetch your data.

One caveat - be sure that the domain matches the business process and is not an interpolation of you understanding of that process. That is - why does a person have primacy over an order and what corner are you painted into when you construct other objects. Does a line-item contain an order as well, and does this lead to object bloat? Discussions with your client should help shape the answer.

Rob Conery of SubSonic fame has a good discussion of these types of issues. It's worth listening to.

Upvotes: 0

cjs
cjs

Reputation: 27291

If you're using SQL to find the set you're interested in, you're in a perfect world. Relational queries are all about finding that sort of thing. Find the perfect query, and then just figure out what the class of the result tuples are, i.e., an object for each result tuple, and process them appropriately.

In your example, you want a set of "Dispatched Orders", which whatever person information necessary attached to each one.

Upvotes: 1

Related Questions