我有一个非常简单的情况,但我似乎不能左右我的头,我有一个桌子促销,有很多网站。该网站可以用于不同的促销活动,在我的(postgres)数据库中,我有3个表;促销,网站和promotions_sites。在我的web应用程序中,用户可以编辑升级并添加站点集合(新行分开)。所以在保存网站的集合是在推广时保存的。这个很管用。仍然存在两个问题: 1)不删除旧站点记录(当从站点行中删除一条记录时);2)保存当前站点时,重新创建所有原始站点。
我的问题是,我应该在哪个级别管理站点;( 1)应用程序级别;在重新插入数据级别之前删除所有站点;是否有nhibernate配置来执行此操作? 3)数据库级别;根据promotions_sites中没有项,在站点表上创建触发器/级联删除。
发布于 2011-07-24 18:02:33
首先,自动孤儿删除。当您的关系被定义为many-to-many时,不能自动删除站点。但是,如果将promotions_sites表映射为单独的实体,并且站点和促销中有两个one-to-many关系,则可以通过将这些关系设置为all-delete-orphan来实现自动删除。
第二件事--在哪里管理集合。你应该让NHibernate来做这个。假设您有正确的映射,那么您不应该在应用程序级别,尤其是在数据库触发器级别上关注它。无论如何,在NHibernate中处理集合的逻辑在某种程度上与您可能熟悉的数据库级别不同。通常,您需要用现有的子集合加载父对象,修改集合并将更改提交回数据库。不应该替换整个集合。
但是,当您显示用于保存更改的映射和代码时,将更容易交谈。
https://stackoverflow.com/questions/6802220
复制相似问题