public class Goal { public string Text { get; set; } public List SubGoals { get; set; } } public class SubGoal { public string Text { get; set; } public List Practices { get; set; } public List Measures { get; set; } } public interface IGoalPlannerRepository { IEnumerable FindAll(); Goal Get(int id); void Save(Goal goal); } CREATE PROCEDURE get_GoalAndAllChildObjects @goal_id int AS SELECT * FROM goal WHERE goal_id = @goal_id SELECT * FROM subgoals WHERE goal_id = @goal_id using (var multi = connection.QueryMultiple("get_GoalAndAllChildObjects", new {goal_id=m_goal_id})) { var goal = multi.Read(); var subgoals = multi.Read(); }