2010-01-05 2 views
2

Я изучаю NHibernate и надеюсь, что вы, ребята, можете мне немного помочь в разработке и решениях Cloud Cloud.Как создать систему тегов с NHibernate (многие из многих)

У меня есть 3 таблицы, которые представляют собой «Новости», «Теги» и «Новости_Таги» с отношениями «Много-ко-многим», а «Новости_Таги» - это таблица ссылок.

Варианты:

  1. каскад = «все», каскад = «все-удалить-сирота» Если удалить одну из записей новостей, то это удалит все мои записи новостей, которые имеют те же теги.

  2. каскада = «сохранить-обновление» Он работает с сохранением и обновлением, но если я пытаюсь удалить новость, это даст ошибку: удаленный объект будет повторно сохранен каскадом (удалить удаленный объект из ассоциаций)

Вот мои отображения:

Тэги:

<class name="Tag" table="Tags" lazy="false"> 
    <id name="TagID"> 
    <generator class="identity" /> 
    </id> 
    <property name="TagName" type="String"></property> 
    <property name="DateCreated" type="DateTime"></property> 

    <!--inverse="true" has been defined in the "News mapping"--> 
    <set name="NewsList" table="New_Tags" lazy="false" cascade="all"> 
    <key column="TagID" /> 
    <many-to-many class="New" column="NewID" /> 
    </set> 
</class> 

Новости:

<class name="New" table="News" lazy="false"> 
<id name="NewID"> 
    <generator class="identity" /> 
</id> 
<property name="Title" type="String"></property> 
<property name="Description" type="String"></property> 

<set name="TagsList" table="New_Tags" lazy="false" inverse="true" cascade="all"> 
    <key column="NewID" /> 
    <many-to-many class="Tag" column="TagID" /> 
</set> 
</class> 

Может ли кто-нибудь предоставить некоторые решения для этого? @Lck упоминается, что я мог бы сделать это вручную, может ли кто-нибудь предоставить образец кода для меня? Большое спасибо.

ответ

0

Взгляните на этот ответ я дал некоторое время назад:

What is the correct way to define many-to-many relationships in NHibernate to allow deletes but avoiding duplicate records

Он не отвечает на ваши quesiton напрямую, а через его крайнее решение и замечания, которые получили вы можете понять, что должно быть сделано для достижения именно того, что вам нужно.

+0

Я потратил 3 ночи на это и почти сдался. Я помещаю inverse = "true" в неправильный файл сопоставления. Спасибо большое. Вы писали какие-либо блоги или статьи, чтобы я мог следить за ними. :) –

+0

Добро пожаловать. На данный момент у меня нет блога, но я над этим работаю ;-) – tolism7

0

С cascade="all", удаление объекта новостей должно просто удалить все соответствующие строки в таблице New_Tags, не так ли? Я не думаю, что он удалит все элементы новостей, помеченные таким образом. Это не то поведение, которое вы хотите?

Смежные вопросы