powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / NHibernate выборка объктов
5 сообщений из 5, страница 1 из 1
NHibernate выборка объктов
    #35823324
Добрый день.

Есть два маппинга на классы


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
  
<class name="Person" table="Person" lazy="true">
    <id name="ID" column="PersonID" type="int" unsaved-value="-1">
      <generator class="identity"/>
    </id>
    <property name="F" column="F" type="string"/>
    <property name="I" column="I" type="string"/>
    <property name="O" column="O" type="string"/>
    <many-to-one name="Phone" class="Phone" cascade="delete" access="field.camelcase-underscore"
                 column="PersonID" unique="true" insert="false" update="false"/>
  </class>

и

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
  <class name="Phone" table="Phone">
    <id name="ID" column="PersonID" type="int">
      <generator class="foreign">
        <param name="property">Person</param>
      </generator>
    </id>
    <property name="Fax" column="Fax" type="string"/>
    <property name="Mobile" column="Mobile" type="string"/>
    <one-to-one name="Person" property-ref="Phone" constrained="false"/>
  </class>

Связь между объектами один к одному

Объекты класса Phone при обращении к соответствующему свойству подтягиваются лениво.

Вся проблема в том, что если у объекта класса Person нет соответствующего объекта класса Phone (т.е. в сущности базы данных Phone отсутствует соответствующий id), то при обращении к свойству Phone генерируется исключение ObjectNotFoundException. Несколько минут погуглив, нашел атрибут not-found, но вся беда в том, что при установке данному атрибуту значения ignore перестает работать ленивая загрузка.

решил попробовать подавить ObjectNotFoundException, но не пойму где его отлавливать? Дело в том, что приложение слоеное и ошибка валиться на бизнес уровне, при попытке манипулировать свойством Phone, а притащить хибернейтовский ObjectNotFoundException я на этот уровень немогу т.к. получу связанность с уровнем доступа к данным.

Второй день уже живу в гугле, натыкался на теги one-to-zero-or-one в блогах по хибернейту, но безрезультатно.

В общем для меня нарисовалась целая проблема, так что прошу помощи здесь.
...
Рейтинг: 0 / 0
NHibernate выборка объктов
    #35823435
тихая гавань
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если попробоавть <many-to-one not-null="false"
а при обращении проверять на null
...
Рейтинг: 0 / 0
NHibernate выборка объктов
    #35823495
тихая гавань
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чегото не то ляпнул,
null Мы не получим, у вас джойном выбирается
можно по индуски поступить
создать интерфейс IValid
отнаследовать Person от него;
Там сделать проверку
Но както через Ж получается.
чегото нахлобуча не видно,он бы подсказал, я хибером поверхностно знаком.

Модератор: Тема перенесена из форума "C#.NET".
...
Рейтинг: 0 / 0
NHibernate выборка объктов
    #35823753
hover
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да странно. задача вроде бытовая.
...
Рейтинг: 0 / 0
NHibernate выборка объктов
    #35828748
b0ltun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробуй так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
<class name="Person" table="Person" lazy="true">
    <id name="ID" column="PersonID" type="int" unsaved-value="-1">
      <generator class="identity"/>
    </id>
    <property name="F" column="F" type="string"/>
    <property name="I" column="I" type="string"/>
    <property name="O" column="O" type="string"/>
    <one-to-one name="Phone" class="Phone" cascade="delete" access="field.camelcase-underscore"/>
  </class>
и
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
 <class name="Phone" table="Phone">
    <id name="ID" column="PersonID" type="int">
      <generator class="foreign">
        <param name="property">Person</param>
      </generator>
    </id>
    <property name="Fax" column="Fax" type="string"/>
    <property name="Mobile" column="Mobile" type="string"/>
    <one-to-one name="Person" constrained="true"/>
  </class>
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / NHibernate выборка объктов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]