Хранимые процедуры прекрасно работают в NHibernate, я использую их без проблем:)
Вам нужно добавить «именованный запрос» в ваше отображение hibernate, например:
<sql-query name="spMyProcedure">
<!-- return type must be an NHibernate mapped entity -->
<return alias="SubscriberQueueItem" type="BizEntities.SubscriberQueueItem, BizEntities" />
exec spMyProcedure @Param1=:Param1, @Param2=:Param2
</sql-query>
Если тип возвращаемого значения вашей хранимой процедуры не совпадает с уже сопоставленной сущностью, вам нужно создать новую.
Чтобы вызвать sp, вам нужно добавить следующий код:
var query = session.GetNamedQuery("spMyProcedure");
query.SetParameter("Param1", "hello");
query.SetParameter("Param2", "byebye");
SubscriberQueueItem result = query.UniqueResult<SubscriberQueueItem>();