Именованный запрос не известная ошибка при попытке назвать сохраненный proc использованием Быстрого NHibernate

Я работаю над установкой NHibernate для проекта, и у меня есть несколько запросов, которые, из-за их сложности, мы будем оставлять как хранимые процедуры. Я хотел бы смочь использовать NHibernate для вызова sprocs, но столкнулся с ошибкой, которую я не могу выяснить. Так как я использую Быстрый NHibernate, я использую смешанный режим, отображающийся, как рекомендуется здесь. Однако, когда я запускаю приложение, я получаю "Именованный запрос, не известный: AccountsGetSingle" исключение и я не можем выяснить почему. Я думаю, что у меня могла бы быть проблема с моим HBM, отображающимся, так как я не очень знаком с использованием их, но я не уверен.

Мой код конфигурации NHibernate:

private ISessionFactory CreateSessionFactory()
{
    return Fluently.Configure()
        .Database(MsSqlConfiguration.MsSql2005
            .ConnectionString((conn => conn.FromConnectionStringWithKey("CIDB")))
                .ShowSql())
        .Mappings(m => 
            {
                m.HbmMappings.AddFromAssemblyOf();
                m.FluentMappings.AddFromAssemblyOf();
            })
        .BuildSessionFactory();
}

Мой файл hbm.xml:



    
        
        exec AccountsGetSingle
    

И код, где я называю sproc, похож на это:

public Account Get()
{
    return _conversation.Session
        .GetNamedQuery("AccountsGetSingle")
        .UniqueResult();
}

Любые мысли или идеи ценились бы.Спасибо.

Обновление: предложение @kibbled_bits получает меня конечный результат, который я ищу (Способность назвать Хранимую процедуру от NHibernate), но я все еще не знаю, почему подход, который я упомянул выше, не работает. Мне все еще любопытно относительно почему, так как это могло бы обеспечить ценное понимание будущих проблем.

11
задан Hamman359 6 April 2010 в 14:32
поделиться

2 ответа

Когда у меня есть для использования хранимых процедур (что происходит только тогда, когда я вынужден). Я предпочитаю использовать следующий метод для их выполнения:

var list = Session.CreateSQLQuery("exec GetCustomerByNaturalKey ?, ?")
.AddEntity(typeof(Customer))
.SetInt32(0, customerNo)
.SetDateTime(1, createdDate)
.List<Customer>();

Первый параметр .SetInt32 / DateTime - это просто порядковый номер параметра.

24
ответ дан 3 December 2019 в 01:15
поделиться

Я получил такое же сообщение об ошибке, и для меня это решилось тем, что свойство моего hbm.xml файла "Build action" было установлено на "Embedded Resource", так что вы можете попробовать еще раз.

18
ответ дан 3 December 2019 в 01:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: