Я написал подтверждение концепции около месяца назад, используя NHibernate на SQLAzure / Sharding. Как вы указали, есть аспекты, которые просто не подходят по этому поводу. Пока поддержка NH не разовьется, вам, возможно, придется попробовать несколько вещей, чтобы выяснить, что работает лучше для вас. Я могу рассказать вам, как это работает у нас.
Мы внедрили простую фабрику стратегий шардинга, которая предоставляет стратегии, которые решают, в какой шард поместить вас в зависимости от наших потребностей. Ваши потребности могут варьироваться здесь. Ключом является создание стратегий, которые обрабатывают, объединяют и упорядочивают результаты вашего запроса. С этого момента создание и использование сеанса происходит так же, как и любое другое использование сеанса, что крайне желательно.
РЕДАКТИРОВАТЬ: Я знаю это сообщение Ayende несколько месяцев назад, но это именно то, как мы это реализовали, и это работает. Ходят слухи, что поддержка в nHibernate придет.