There are many ways to do it, but one way is this:
SPROC (all pseudo)
@id int
SELECT * FROM Contact WHERE Id = @id
SELECT * FROM Address WHERE ContactId = @id
This gives you two result sets.
Then in your class Contact class:
// Get a reader based on the sproc
// Fill contact with data from the reader.
// Then fill the contact:
myContact.Address = new Address(myReader.NextResult());
The Address constructor accepts a IDataReader that it uses to fill in the data.
For more info on NextResult:
http://msdn.microsoft.com/en-us/libr...extresult.aspx
Imar