流利的NHibernate;馆藏管理

时间:2011-07-23 17:52:04

标签: nhibernate collections fluent-nhibernate

我有一个非常简单的情况,但我似乎无法理解;我有一个表促销,其中有许多网站网站可以与不同的促销一起使用,在我的(postgres)数据库中,我有3个表格;促销,网站和promotion_sites。 在我的Web应用程序中,用户可以编辑促销并添加一组网站(新行分隔)。因此,在保存中,网站集合将保存在促销中。这有效。还有2个问题; 1)旧网站记录未被删除(当从网站行删除一个) 2)保存当前站点时,将重新创建所有原始站点

我的问题是我应该在哪个级别管理网站; 1)申请水平;在重新插入之前删除所有网站 2)数据级别;是否有一个nhibernate配置来做到这一点? 3)数据库级别;根据promotions_sites中缺少项目

在站点表上创建触发器/级联删除

1 个答案:

答案 0 :(得分:0)

首先,自动孤儿会删除。当您的关系定义为many-to-many时,无法自动删除网站。但是,如果您的promotions_sites表格被映射为单独的实体,并且您在网站促销中有两个one-to-many关系,则可以通过设置实现自动删除关于与all-delete-orphan的关系级联

第二件事 - 管理集合的位置。你应该让NHibernate这样做。假设您有适当的映射,您不应该在应用程序级别或特别是在数据库触发级别关注它。无论如何,在NHibernate中处理集合的逻辑在某种程度上与您在数据库级别可能熟悉的不同。通常,您需要使用现有子集合加载父对象,修改集合并将更改提交回数据库。你不应该替换整个集合。

但是当您显示用于保存更改的映射和代码时,会更容易说话。