NHibernate映射未在外键引用中添加ON DELETE CASCADE选项 [英] NHibernate mapping not adding ON DELETE CASCADE option to foreign key reference
本文介绍了NHibernate映射未在外键引用中添加ON DELETE CASCADE选项的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
这是我的NHibernate映射.
Here's my NHibernate mapping.
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="HelloNHibernate" namespace="HelloNHibernate">
<class name="Showing" table="showing">
<id name="Id" column="showing_id">
<generator class="identity"/>
</id>
<many-to-one class="Theater" name="Theater" column="theater_id" foreign-key="fk_showing_theater_theater_id" cascade="delete" lazy="false" fetch="join"/>
<many-to-one class="Movie" name="Movie" column="movie_id" foreign-key="fk_showing_movie_movie_id" cascade="delete" lazy="false" fetch="join" />
</class>
</hibernate-mapping>
这是SchemaExport工具生成的SQL(PostgreSQL):
Here's the SQL (PostgreSQL) generated by the SchemaExport tool:
CREATE TABLE showing
(
showing_id serial NOT NULL,
theater_id integer,
movie_id integer,
CONSTRAINT showing_pkey PRIMARY KEY (showing_id),
CONSTRAINT fk_showing_movie_movie_id FOREIGN KEY (movie_id)
REFERENCES movie (movie_id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT fk_showing_theater_theater_id FOREIGN KEY (theater_id)
REFERENCES theater (theater_id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
)
我做错了什么?谢谢!
推荐答案
NHibernate只能对逆集合生成on delete cascade
约束.
NHibernate can only generate on delete cascade
constraints on inverse collections.
您的域的示例:
<class name="Movie">
...
<bag name="Showings" inverse="true" cascade="all">
<key column="Foo" on-delete="cascade" /><!--Here's the magic-->
<one-to-many class="Showing" />
</bag>
</class>
这篇关于NHibernate映射未在外键引用中添加ON DELETE CASCADE选项的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文