Как сказал Эндрю, свойства являются виртуальными для запуска отложенной загрузки. Вот объяснение, почему это так: во время выполнения NHibernate заменит прокси-объекты для ваших объектов недвижимости. Когда к ним обращаются, прокси-объекты знают, как получить реальные объекты для вас. Пометка свойств как виртуальных позволяет выполнить эту замену.