我正在学习NHibernate,并希望你们能帮助我一点关于Tag Cloud设计和解决方案。
我有3个表是“新闻”,“标签”和“News_Tags”,具有多对多关系,“News_Tags”是链接表。
选项:
cascade =“all”,cascade =“all-delete-orphan”如果删除其中一条新闻记录,它将删除所有具有相同标签的新闻记录
cascade =“save-update”它适用于保存和更新,但如果我尝试删除新闻,则会给出错误:已删除的对象将通过级联重新保存(从关联中删除已删除的对象)
这是我的映射:
标签:
<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 :(得分:0)
使用cascade="all"
,删除一个News对象应该只删除New_Tags表中的所有相应行,不是吗?我认为它不会删除所有标记的新闻项目。这不是你想要的行为吗?
答案 1 :(得分:0)
看看我刚才给出的答案:
它没有直接回答你的问题,而是通过它的极端解决方案,它给你的评论可能会理解需要做些什么才能达到你所需要的。