Почему появляется необходимость в контексте? И когда она появляется? Появляется она тогда, когда теряется совершенство мира, то есть самодостаточность полученных из датаридера данных. Счастливые пользователи raw db data знают: то, что они извлекают из ридера — это тот минимум, и одновременно максимум, нужный именно сейчас, прямо после вызова. Пользователи ОРМ часто проектируют модель "наперед". Что значит: а) вводят везде где ни попадя навигационный доступ и б) злоупотребляют иерархичностью. Что, кстати, ни в коей мере не является проблемой ОРМ, а является проблемой проектирования модели предметной области. Теперь уже данные, полученные с таким трудом из базы не являются самодостаточными для восстановления объекта по ним. Теперь нам еще нужно восстановить ссылки (хотя из базы приходят только ключи), и агрегированные внутрь коллекции объектов. Почему это плохо? Потому что СУБД "быстрая внутри, и медленная снаружи". То есть быстрее получить за раз 100 записей, чем 10 раз по 10 записей.
И для того, чтобы восстановить дополнительные данные, ОРМ-у приходится дробить запросы. И если с ссылками можно было бы выкрутиться при помощи JOIN-ов, то с иерархиями совсем туго. И пресловутый идентити маппинг и тут вмешивается — в зависимости от сценария использования, иногда выгоднее получать ссылки JOIN-ом, иногда — отдельным запросом.