Ошибка «Именованный запрос не знает» в сеансе. GetNamedQuery () - PullRequest
2 голосов
/ 25 февраля 2011

Я постоянно получаю исключение MappingException «Именованный запрос неизвестен» при вызове session.GetNamedQuery ().Я использую Fluent с NHibernate 3.0, и у меня есть запрос в файле hbm.xml.Для простоты у меня все в одной сборке.Я установил действие сборки для файла xml «Встроенный ресурс».

Моя конфигурация выглядит следующим образом:

var nhConfig = Fluently.Configure()
                    .Database(SQLAnywhereConfiguration
                  .SQLAnywhere10
                  .ConnectionString("uid='dba'; pwd='sql'; dsn=db"))
                  .ExposeConfiguration(c => c.SetProperty("current_session_context_class", "thread_static"))
                  .Mappings(m => m.FluentMappings.AddFromAssemblyOf<Party>())
                  .BuildConfiguration();

            var sessionFactory = nhConfig.BuildSessionFactory();


            ISession session = sessionFactory.OpenSession();
            CurrentSessionContext.Bind(session);


            NHibernate.IQuery q = session.GetNamedQuery("GetFirstParty");

Мой файл GetFirstParty.hbm.xml выглядит следующим образом:

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">

  <query name="GetFirstParty">
    <![CDATA[from Party p where p.CaseNumber = :CaseNumber]]>
  </query>

</hibernate-mapping>

Что мне здесь не хватает ???

Пожалуйста, помогите.

Спасибо,

Майк

1 Ответ

8 голосов
/ 25 февраля 2011

Вам необходимо включить отображения HBM в вашу свободную конфигурацию:

var nhConfig = Fluently.Configure()
                  .Database(SQLAnywhereConfiguration
                  .SQLAnywhere10
                  .ConnectionString("uid='dba'; pwd='sql'; dsn=db"))
                  .ExposeConfiguration(c => c.SetProperty(Environment.CurrentSessionContextClass, "thread_static"))
                  .Mappings(m => 
                  {
                    m.FluentMappings.AddFromAssemblyOf<Party>();
                    m.HbmMappings.AddFromAssemblyOf<Party>();
                  })
                  .BuildConfiguration();
...