2011-03-21 53 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);