Описание проблемы:
Я пытаюсь выполнить хранимую процедуру с входным параметром. Хранимая процедура выполняется правильно при запуске из MSSQL 2008 SQL Studio. Однако я получаю сообщение об ошибке при запуске его в качестве именованного запроса с использованием NHibernate.
Я получаю ошибку во время конфигурации SessionFactory.
Следовательно, я считаю, что я неправильно отображаю именованный запрос.
Детали хранимой процедуры:
Название процедуры : CASCADE_POSITIONTEMPLATE_PERMISSIONS
Входной параметр : PositionTemplateId
Хранимая процедура возвращает счетчик, который я хочу вернуть, инкапсулированный в классе PositionTemplateUpdateCascadeResult
, который имеет указанное свойство.
Отображение именованных запросов / классов:
Отображение именованных запросов:
<hibernate-mapping default-cascade="none" xmlns="urn:nhibernate-mapping-2.2"
assembly="StudentVoiceGroups.Entities" namespace="StudentVoiceGroups.Entities" >
<sql-query name="CASCADE_POSITIONTEMPLATE_PERMISSIONS" cacheable="false">
<return class="PositionTemplateUpdateCascadeResult" alias="result">
<return-property name="UpdatedPositionsCount">
<return-column name="UpdatedPositionsCount" />
</return-property>
</return>
exec CASCADE_POSITIONTEMPLATE_PERMISSIONS :PositionTemplateId
</sql-query>
</hibernate-mapping>
Ниже приведен класс, который я хочу вернуть:
public class PositionTemplateUpdateCascadeResult
{
public int UpdatedPositionsCount { get; set; }
}
когда я выполняю процедуру в MSSQL Studio как:
EXEC [CASCADE_POSITIONTEMPLATE_PERMISSIONS] 15
Я получаю следующее
Дайте мне знать, если что-то еще нужно.
РЕДАКТИРОВАТЬ: я смог сделать эту работу, когда я удалил класс возврата:
Следующее отображение работает корректно:
<hibernate-mapping default-cascade="none" xmlns="urn:nhibernate-mapping-2.2"
assembly="StudentVoiceGroups.Entities" namespace="StudentVoiceGroups.Entities" >
<sql-query name="CASCADE_POSITIONTEMPLATE_PERMISSIONS" cacheable="false">
exec CASCADE_POSITIONTEMPLATE_PERMISSIONS :PositionTemplateId
</sql-query>
</hibernate-mapping>
Должен ли возвращаемый класс быть сущностью, которая отображается в таблицу? В моем случае это простой класс. Я придерживался мнения, что класс возврата используется так же, как мы используем ResultTransformer
.