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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [nhibernate] не создается связь (N*N) 
V
    Опции темы
kosmonaFFFt
Дата 9.2.2010, 19:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Доброго времени суток...
Имеются два класса со связью многие ко многим...
Вот их маппинги:

Код

<?xml version="1.0" encoding="utf-8"?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="ReklamaProject" assembly="ReklamaProject">
  <class name="Announcement">
    <id name="Id">
      <generator class="assigned"/>
    </id>
    <many-to-one name="Rubric" class="Rubric" not-null="true"/>
    <many-to-one name="Subrubric" class="Subrubric" not-null="true"/>
    <property name="Text" not-null="true"/>
    <property name="Tel" not-null="true"/>
    <property name="IsAdditionlasOn" not-null="true"/>
    <property name="LettersType"/>
    <property name="CornerType"/>
    <property name="VyvorotkaType"/>
    <property name="IsFirstInRubric"/>
    <set name="Numbers" table="EditionNumberAnnouncementLink">
      <key column="AnnouncementId"/>
      <many-to-many column="EditionNumberId" class="EditionNumber"/>
    </set>
    <property name="Sum" not-null="true"/>
    <property name="IsNal" not-null="true"/>
    <many-to-one name="Manager" class="Manager" not-null="true"/>
  </class>
</hibernate-mapping>


Код

<?xml version="1.0" encoding="utf-8"?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="ReklamaProject" assembly="ReklamaProject">
  <class name="EditionNumber">
    <id name="Id">
      <generator class="identity"/>
    </id>
    <property name="Name" unique="true" not-null="true"/>
    <property name="IsOpen" not-null="true"/>
    <set name="Announcements" table="EditionNumberAnnouncementLink">
      <key column="EditionNumberId"/>
      <many-to-many column="AnnouncementId" class="Announcement"/>
    </set>
    <set name="Modules" table="EditionNumberModuleLink">
      <key column="EditionNumberId"/>
      <many-to-many column="ModuleId" class="Module"/>
    </set>
  </class>
</hibernate-mapping>


Я создаю объект класса Announcement, он успешно добавляется в БД, а потом пытаюсь установить связи с объектами класса EditionNumber
следующим образом:

Код

public void AddAnnouncementToNumber(EditionNumber number, Announcement ann)
        {
            if (!DBController.Instance.Session.IsConnected)
            {
                throw new ReklamaException("Ахтунг, база не открыта!!!");
            }

            DBController.Instance.Session.Transaction.Begin();
            number.Announcements.Add(ann);
            DBController.Instance.Session.Transaction.Commit();
        }


но связь при этом не создается...
Подскажите, плс, в чем может быть затык...
Заранее спасибо...


--------------------
user posted image
PM MAIL ICQ   Вверх
Linus
Дата 28.2.2010, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



А затык может быть в том, что NHibernate по умолчанию использует cascade="none" для ассоциаций, в которых не настроен каскад. 
PM MAIL ICQ   Вверх
KuMa1104
Дата 1.3.2010, 23:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



kosmonaFFFt Я в NHibernate не очень силён. Но всё таки.

Может быть довольно много чего.

Попробуйте сначала упростить вашу задачу, выкиньте всё то что к сути дела не относится и посмотрите после на их взаимодействие.

Цитата(kosmonaFFFt @  9.2.2010,  19:59 Найти цитируемый пост)
Я создаю объект класса Announcement, он успешно добавляется в БД, а потом пытаюсь установить связи с объектами класса EditionNumber
следующим образом:


А вы делаете до этого flush или как то сохраняете в бд?

Рекомендую ознакомится. Там можно скачать хороший пример.Правдо там fluent используются. Но принцип тот же. Во многом эта надстройка оч удобна.
http://fluentnhibernate.org/

А так без стеклянного шара (лично мне) сложно сказать.



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

Время - штука относительная... а время обеда - ещё более относительная
PM MAIL   Вверх
kosmonaFFFt
Дата 2.3.2010, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Спасибо. но я уже разобрался - баг мой был... NHibernate тут не при чем...


--------------------
user posted image
PM MAIL ICQ   Вверх
Linus
Дата 4.3.2010, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



И в чем же баг, если не секрет?
PM MAIL ICQ   Вверх
kosmonaFFFt
Дата 4.3.2010, 19:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Ну, оказалось, что один хитрый метод, вызываемый по событию, удалял из коллекции объекты, которые потом должны были добавляться в связь...
Вот и получалось, что я проходил foreach по пустой коллекции, и пытался создать связи... Примерно так...


--------------------
user posted image
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

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

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

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


 




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


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

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