2011-03-21 55 views
0

我有NHibernate和存储库模式一个非常基本的问题:NHibernate的仓库模式

我有一个存储库(聚集),这是父母。如果我想删除一个孩子,我是否应该有一个删除方法来处理孩子和父母的删除,还是应该有不同的方法?

我该如何处理删除有孩子的父母。 任何示例代码将不胜感激。

回答

1

你使用hbm映射文件或流利NHibernate来设置你的映射?

如果您正在使用的映射文件,其中一个方案是设置级联属性,例如:

... 
<bag name="Children" lazy="true" cascade="delete" > 
    <key column="ParentId" /> 
    <one-to-many class="Child" /> 
</bag> 
... 

级联=“删除”将导致母公司删除到它相关联的对象被级联。级联可以指定为cascade =“all | none | save-update | delete”,因此您可以指定哪些操作应该从父级级联到关联的对象。

+0

感谢您的回应,我使用FluentNhibernate的映射。 – user669803 2011-03-21 17:47:41

+0

@ user669803我对Fluent界面不太熟悉,但是,文档会说:“与所有其他流利映射一样,您可以链接调用来自定义引用关系。例如,如果您想指定要使用的级联策略Cascade属性。参考(x => x.Author).Column(“AuthorId”)。Cascade.All();“ – Graham 2011-03-21 18:00:23

0

注意.Cascade.All()

HasMany(item => item.ItemFeedbackItems) 
      .KeyColumn("ItemID") 
      .Cascade.All() 
      .LazyLoad() 
      .Access.ReadOnlyPropertyThroughCamelCaseField(Prefix.Underscore);