Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Custom SQL NHibernate, Custom SQL NHibernate 
:(
    Опции темы
Geny
Дата 16.12.2009, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 5.2.2007

Репутация: нет
Всего: нет



Имею вот такой меппинг:
Код

  <class name="ClassTable" table="Table">
    <id name="Id" column="id">
      <generator class="native"/>
    </id>
    <property name="Shortname"  column="SHORTNAME" not-null ="false" insert ="false" update ="false"/>
    <loader query-ref="myQuery"/>
  </class>
  
  <sql-query name="myQuery">
    <return alias="tab" class="ClassTable">
      <return-property name="Id" column="myId"></return-property>
      <return-property name="Shortname" column="myShortname"></return-property>
    </return>
    select tab.id as myId, tab.SHORTNAME as myShortname
    from Table tab where tab.id  = ? order by tab.SHORTNAME
  </sql-query>

Я думаю что при выполнении session.CreateCriteria мне вернется заполненный объект так как я определил в "myQuery", но мне возвращается заполненный объект просто как
Код

SELECT * FROM Table

а если я меняю меппинг, на такой
Код

  <class name="ClassTable">
    <id name="Id" column="id">
      <generator class="native"/>
    </id>
    <property name="Shortname"  column="SHORTNAME" not-null ="false" insert ="false" update ="false"/>
    <loader query-ref="myQuery"/>
  </class>
  
  <sql-query name="myQuery">
    <return alias="tab" class="ClassTable">
      <return-property name="Id" column="myId"></return-property>
      <return-property name="Shortname" column="myShortname"></return-property>
    </return>
    select tab.id as myId, tab.SHORTNAME as myShortname
    from Table tab where tab.id  = ?
  </sql-query>

т.е. убираю свойство table="Table", то NHibernate строит неправильный SQL запрос:
Код

SELECT * FROM ClassTable


и естественно не работает потому что такой таблицы нет.

Кто подскажет, что я неправильно делаю

Спасибо.
PM MAIL   Вверх
Artorius
Дата 18.12.2009, 21:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 27.3.2007

Репутация: нет
Всего: 1



А ты чего хочешь добиться, убирая table="Table"?

Если покопаться в исходниках NHibernate, то можно найти вот это (ClassBuilder.cs):
Код

        private string GetClassTableName(PersistentClass model, HbmClass classSchema)
        {
            if (classSchema.table == null)
                return mappings.NamingStrategy.ClassToTableName(model.EntityName);
            else
                return mappings.NamingStrategy.TableName(classSchema.table.Trim());
        }


Не укажешь таблицу явно - по дефолту присвоится имя класса
PM MAIL   Вверх
KuMa1104
Дата 29.12.2009, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 541
Регистрация: 16.4.2009
Где: Ростов-на-Дону

Репутация: 1
Всего: 3



Здравствуйте.
Вопрос не по теме но всё таки.

Можете кинуть ссылку на какоинибудь хороший ресурс про NHibernate/
Желательно на русском языке.


--------------------
Галактика – суровая штука. Чтобы в ней выжить, надо знать, где твое полотенце.

Время - штука относительная... а время обеда - ещё более относительная
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Базы данных под .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0700 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.