Я работаю над настройкой NHibernate для проекта, и у меня есть несколько запросов, которые из-за их сложности мы оставим как хранимые процедуры. Я хотел бы иметь возможность использовать NHibernate для вызова sprocs, но столкнулся с ошибкой, которую я не могу понять. Так как я использую Fluent NHibernate, я использую смешанный режим отображения, как рекомендовано здесь . Однако, когда я запускаю приложение, я получаю исключение «Именованный запрос не известен: AccountsGetSingle», и я не могу понять, почему. Я думаю, что у меня могут быть проблемы с моим отображением HBM, так как я не очень знаком с их использованием, но я не уверен.
Мой код конфигурации NHibernate:
private ISessionFactory CreateSessionFactory()
{
return Fluently.Configure()
.Database(MsSqlConfiguration.MsSql2005
.ConnectionString((conn => conn.FromConnectionStringWithKey("CIDB")))
.ShowSql())
.Mappings(m =>
{
m.HbmMappings.AddFromAssemblyOf<Account>();
m.FluentMappings.AddFromAssemblyOf<Account>();
})
.BuildSessionFactory();
}
Мой файл hbm.xml:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<sql-query name="AccountsGetSingle">
<return alias="Account" class="Core, Account"></return>
exec AccountsGetSingle
</sql-query>
</hibernate-mapping>
И код, по которому я вызываю sproc, выглядит так:
public Account Get()
{
return _conversation.Session
.GetNamedQuery("AccountsGetSingle")
.UniqueResult<Account>();
}
Любые мысли или идеи будут оценены. Спасибо.
Обновление: Предложение @ kibbled_bits дает мне конечный результат, который я ищу (возможность вызывать хранимую процедуру из NHibernate), но я до сих пор не знаю, почему подход, который я перечислил выше не работает. Мне все еще интересно, почему, поскольку это может дать ценную информацию о будущих проблемах.